在Python中生成指数分布
我知道在Python中生成指数分布,python,python-3.x,probability,probability-density,Python,Python 3.x,Probability,Probability Density,我知道random.expovariate函数,但这不是我需要的。 我想生成一个长度为N的流,其中1和M之间的每个元素I以概率1/(2^(I+1))进行选择 因此,元素0以1/2的概率选择,元素1以1/4的概率选择,元素2以1/8的概率选择,等等 在python中有什么简单的方法可以做到这一点吗?简单的解决方案是还原函数并预测概率以找到数字: def generate(): proba = random.random() max = 0 for i in range(1,
random.expovariate
函数,但这不是我需要的。
我想生成一个长度为N
的流,其中1
和M
之间的每个元素I
以概率1/(2^(I+1))进行选择
因此,元素0
以1/2的概率选择,元素1
以1/4的概率选择,元素2以1/8的概率选择,等等
在python中有什么简单的方法可以做到这一点吗?简单的解决方案是还原函数并预测概率以找到数字:
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 = 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])