目前我有以下代码
def approx_binomial(n, p, size=None):
gaussian = np.random.normal(n*p, n*p*(1-p), size=size)
# Add the continuity correction to sample at the midpoint of each integral bin.
gaussian += 0.5
if size is not None:
binomial = gaussian.astype(np.int64)
else:
# scalar
binomial = int(gaussian)
return binomial
但是,它不是很准确,因为它使用了随机函数。有没有其他方法可以使用 for 循环重写函数?
我的另一个问题是如何显示概率质量函数与成功次数的关系图?
def approx_binomial(n, p, size=None):
gaussian = np.random.normal(n*p, n*p*(1-p), size=size)
# Add the continuity correction to sample at the midpoint of each integral bin.
gaussian += 0.5
if size is not None:
binomial = gaussian.astype(np.int64)
else:
# scalar
binomial = int(gaussian)
return binomial
plt.plot(n,p)
plt.show()
谢谢!
使用 for 循环从二项分布中获取随机样本的明显方法是:
import random
def binomial_random_sample(n, p):
ret = 0
for j in range(n):
if random.random() < p:
ret += 1
return ret
或者如果您更喜欢更简洁的方法:
def binomial_random_sample(n, p):
return sum(random.random() < p for j in range(n))
我是一名优秀的程序员,十分优秀!