2017-11-28 12 views
1

Pythonを使用した超幾何分布計算に関する質問があります。 5個の青色のボールと10個の赤色のボールがあるとします。無作為に5個のボールを選んだ場合、5個のうち4個のブルースを正確に選ぶことはできますか?シミュレーションを使用してPythonで実行する場合、コードは次のとおりです。超幾何分布の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を得ます。ではなぜこれら2つの違いがありますか?

答えて

1

hypergeometric distributionに一致させるには、置き換えなしでの5つのボールを選択する必要があります。pickの世代を

pick = np.random.choice(balls, 5, replace=False) 
に変更します
関連する問題