python 中的二项分布

Binomial distribution in python

所以,我有一个很简单的程序,如下:

from scipy.stats import binom
import matplotlib.pyplot as plt
import numpy as np

for x in range(10,20):
    p = sum(np.random.binomial(30,0.5,100000)==x)/100000

print(p)

这个想法是,给定一次向左或向右走的概率相等的随机行走,向右走 10-20 步的概率是多少。看起来很简单,如果我将 x 设置为 15,它实际上会产生正确的答案。但是当我为这个特定范围设置它时,它给了我 ~5%,这是错误的。应该接近 100%。做什么?

"sum()" 不会给你一个循环生命周期的 运行 总和:它对括号内的项目求和。您只会得到最后一次拆分,即 x==19 的拆分。试试这个:

p = 0.0
for x in range(10,20):
    p += sum(np.random.binomial(30,0.5,100000)==x)/100000