numpy.random.RandomState.multinomial#
方法
- random.RandomState.multinomial(n, pvals, size=None)#
從多項式分佈中抽取樣本。
多項式分佈是二項式分佈的多變量推廣。考慮一個具有
p
種可能結果的實驗。例如,擲骰子,結果可能是 1 到 6。從分佈中抽取的每個樣本代表 n 個此類實驗。其值X_i = [X_0, X_1, ..., X_p]
表示結果為i
的次數。注意
新程式碼應使用
multinomial
方法,此方法屬於Generator
實例;請參閱快速入門。警告
此函數預設為 C-long dtype,在 Windows 上為 32 位元,在 64 位元平台上則為 64 位元 (在 32 位元平台上為 32 位元)。自 NumPy 2.0 起,NumPy 的預設整數在 32 位元平台上為 32 位元,在 64 位元平台上為 64 位元。
- 參數:
- n整數
實驗次數。
- pvals浮點數序列,長度 p
每個
p
種不同結果的機率。這些機率總和必須為 1 (但是,只要sum(pvals[:-1]) <= 1)
,則最後一個元素始終假定為剩餘機率)。- size整數或整數元組,選用
輸出形狀。如果給定的形狀為 (例如)
(m, n, k)
,則抽取m * n * k
個樣本。預設值為 None,在這種情況下,會傳回單一值。
- 傳回值:
- outndarray
抽取的樣本,如果已提供 size,則形狀為 size。否則,形狀為
(N,)
。換句話說,每個條目
out[i,j,...,:]
都是從分佈中抽取的 N 維值。
另請參閱
random.Generator.multinomial
新程式碼應使用此方法。
範例
擲骰子 20 次
>>> np.random.multinomial(20, [1/6.]*6, size=1) array([[4, 1, 7, 5, 2, 1]]) # random
結果 1 出現 4 次,2 出現 1 次等等。
現在,擲骰子 20 次,再擲 20 次
>>> np.random.multinomial(20, [1/6.]*6, size=2) array([[3, 4, 3, 3, 4, 3], # random [2, 4, 3, 4, 0, 7]])
第一次擲骰,我們擲出 1 點 3 次、2 點 4 次等等。第二次擲骰,我們擲出 1 點 2 次、2 點 4 次等等。
灌鉛骰子更可能擲出數字 6
>>> np.random.multinomial(100, [1/7.]*5 + [2/7.]) array([11, 16, 14, 17, 16, 26]) # random
機率輸入應正規化。作為實作細節,最後一個條目的值會被忽略,並假定佔用任何剩餘的機率質量,但不應依賴此行為。權重在一側是另一側兩倍的偏頗硬幣應如下取樣
>>> np.random.multinomial(100, [1.0 / 3, 2.0 / 3]) # RIGHT array([38, 62]) # random
而不是像這樣
>>> np.random.multinomial(100, [1.0, 2.0]) # WRONG Traceback (most recent call last): ValueError: pvals < 0, pvals > 1 or pvals contains NaNs