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