2015-10-03 58 views
0

我跑下列行:爲什麼這個numpy multinominal方法運行時沒有任何錯誤?

np.random.multinomial(10, [1/5., 1/5., 1/5., 1/5., 1/5., 1/5.]) 

和它產生一個輸出

array([3, 4, 0, 0, 3, 0]) 

這意味着當我搖10次6點的骰子中,上述輸出代表數的頻率計數某一方出現的次數。在這裏,第一面出現了3次,第二面出現了4次,依此類推。

我的問題是不應該上面的方法拋出一個錯誤,因爲骰子的邊的概率值總和> 1/0?我相信我在這裏誤解了一些東西,但無法弄清楚什麼。

回答

1

文檔說:

pvals : sequence of floats, length p 
    Probabilities of each of the ``p`` different outcomes. These 
    should sum to 1 (however, the last element is always assumed to 
    account for the remaining probability, as long as 
    ``sum(pvals[:-1]) <= 1)``. 

這意味着最後一個元素被分配0 運行此概率:

sum_last = 0 

for trial in np.arange(20): 
    sum_last += np.random.multinomial(10, [1/5., 1/5., 1/5., 1/5., 1/5., 1/5.])[-1] 
print sum_last 

你會看到最後一個元素一直沒有出現,的概率確實是0

1

實際上代碼只會考慮直到pvals總和爲1.所以在這種情況下只有前五個和。所以在你排列第六個元素時,無論你運行多少次都是零。因此,如果所有6個元素都爲1/3,則它將執行,就好像拋出了邊3的骰子一樣,而在輸出數組中,最後3個元素將爲零。它不必顯示錯誤。一旦總和達到一,並且簡單地忽略其他,它將停止。這是語法。 希望這有助於。

相關問題