【发布时间】:2017-11-29 04:31:35
【问题描述】:
我有一个关于使用 Python 进行超几何分布计算的问题。假设我有一袋 15 个球,其中 5 个是蓝色的,10 个是红色的。如果我随机挑出 5 个球,我从 5 个蓝球中恰好挑出 4 个的几率是多少?如果我在 Python 中使用模拟执行此操作,则代码如下:
import numpy as np
balls=['blue']*5+['red']*10
count=0
for i in range(10000):
pick=np.random.choice(balls, 5)
if list(pick).count('blue')==4:
count+=1
odds=count/10000
print(odds)
我得到大约 0.04。但是如果我使用 scipy.stats,我会得到一个不同的数字。代码很简单。
from scipy import stats
odds=stats.hypergeom.pmf(4, 15, 5, 5)
print(odds)
我得到 0.016。那么为什么这两个不同呢?
【问题讨论】: