![](/img/trans.png)
[英]Generate random numbers from exponential distribution and model using python
[英]Generate exponential distribution in Python
我知道random.expovariate
函数,但这不是我所需要的。 我想生成一个长度为N
的流,其中选择1
和M
之间的每个元素i
概率为1 /(2 ^(i + 1))。因此,选择元素0
概率为1/2,选择元素1
概率为概率1/4,元素2的概率为1/8,依此类推。
有什么简单的方法可以在python中做到这一点吗?
简单的解决方案是还原函数并预测proba来找到数字:
def generate():
proba = random.random()
max = 0
for i in range(1,M+1):
max += (1/2)**i
if(proba<= max):
return i-1
return generate()
如果M小,分布将不会收敛,因此并非所有[0,1]都是可到达的,因此您只需重试即可。
一点测试:
M = 10
res = [0 for i in range(M+1)]
for i in range(1000):
res[generate()]+=1
plt.plot([r/1000 for r in res])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.