Python 两步概率绘制-结合概率加权函数和从实际正态分布绘制
我想根据一个特定的概率函数,用python绘制一个随机值(r): 该值应为固定常数,概率为(p),概率为(1-p),该值从区间(a,b)的正态分布中随机抽取 在我看来,该函数由两部分组成: 第一张图:概率为p和(1-p)的概率加权函数 第二次抽取:区间(a,b)中截断正态分布的抽取 f、 e.Python 两步概率绘制-结合概率加权函数和从实际正态分布绘制,python,random,probability,normal-distribution,random-seed,Python,Random,Probability,Normal Distribution,Random Seed,我想根据一个特定的概率函数,用python绘制一个随机值(r): 该值应为固定常数,概率为(p),概率为(1-p),该值从区间(a,b)的正态分布中随机抽取 在我看来,该函数由两部分组成: 第一张图:概率为p和(1-p)的概率加权函数 第二次抽取:区间(a,b)中截断正态分布的抽取 f、 e.常数=10;p=0,3;1-p=0,7,a=5,b=15 我的想法是: r=random.choices([constant,random.normal()],weights=(0.3,0.7)) 但是,它
常数=10;p=0,3;1-p=0,7,a=5,b=15
我的想法是:
r=random.choices([constant,random.normal()],weights=(0.3,0.7))
但是,它似乎不起作用,而且我不知道如何包含区间(a,b)。你的想法是正确的,但你没有正确处理正态分布。首先,如果您使用的是
import random
,您的选择是random.gauss(mu,sigma)
或random.normalvariate(mu,sigma)
。没有normal()
函数。第二,正态分布的范围是无限的。您可以指定分布中心mu
,以及sigma
,这是一种分布度量,使得约95%的结果将落在mu±2*sigma
范围内。如果确实需要限制范围,则需要使用循环编写自己的函数,以拒绝超出范围限制的值,然后重试
下面是一个工作示例,展示了您的想法:
随机导入
常数=-42
μ=10
西格玛=2
对于范围(10)内的uu:
r=随机选择((常数,随机,高斯(μ,σ)),权重=(0.3,0.7))
印刷品(r)
对于那些mu
和sigma
的值,超出范围[5,15]的结果将很少见,但肯定仍然会发生
这将产生如下结果:
[7.674159248587632]
[-42]
[7.818652194185853]
[-42]
[7.418414458386396]
[11.855000252151326]
[12.398753049340957]
[9.663097201849096]
[-42]
[10.385663464672415]
如果您不喜欢括号,print(r[0])