numpy.random.Generator.multinomial

方法

random.Generator.multinomial(n, pvals, size=None)

从多项式分布中提取样本。

多项式分布是二项分布的多元推广。用其中一个做实验 p 可能的结果。这种实验的一个例子是掷骰子,结果可以是1到6。从分布中提取的每个样本表示 n 这样的实验。它的价值观, X_i = [X_0, X_1, ..., X_p] ,表示结果的次数 i .

参数
nint或类似数组的int

实验次数。

pvals浮点数序列,长度p

每个的概率 p 不同的结果。它们的总和必须为1(但是,只要 sum(pvals[:-1]) <= 1) .

sizeint或int的元组,可选

输出形状。如果给定的形状是,例如, (m, n, k) 然后 m * n * k 取样。默认值为无,在这种情况下返回单个值。

返回
out恩达雷

提取的样品,形状 size ,如果提供的话。如果不是,形状是 (N,) .

换句话说,每个条目 out[i,j,...,:] 是从分布中提取的N维值。

实例

掷骰子20次:

>>> rng = np.random.default_rng()
>>> rng.multinomial(20, [1/6.]*6, size=1)
array([[4, 1, 7, 5, 2, 1]])  # random

它在1号着陆4次,在2号着陆一次,等等。

现在,掷骰子20次,再掷20次:

>>> rng.multinomial(20, [1/6.]*6, size=2)
array([[3, 4, 3, 3, 4, 3],
       [2, 4, 3, 4, 0, 7]])  # random

第一次,我们掷了3次1,4次2,等等。第二次,我们掷了2次1,4次2,等等。

现在,做一个掷骰子10次,再掷10次,另一个掷骰子20次,再掷20次:

>>> rng.multinomial([[10], [20]], [1/6.]*6, size=(2, 2))
array([[[2, 4, 0, 1, 2, 1],
        [1, 3, 0, 3, 1, 2]],
       [[1, 4, 4, 4, 4, 3],
        [3, 3, 2, 5, 5, 2]]])  # random

第一个数组显示掷骰子10次的结果,第二个数组显示掷骰子20次的结果。

加载的模具更有可能降落在6号:

>>> rng.multinomial(100, [1/7.]*5 + [2/7.])
array([11, 16, 14, 17, 16, 26])  # random

概率输入应该被规范化。作为一个实现细节,最后一个条目的值被忽略并假定为占据任何剩余的概率量,但这不应该依赖。有偏硬币的一边重量是另一边重量的两倍,应该这样取样:

>>> rng.multinomial(100, [1.0 / 3, 2.0 / 3])  # RIGHT
array([38, 62])  # random

不像:

>>> rng.multinomial(100, [1.0, 2.0])  # WRONG
Traceback (most recent call last):
ValueError: pvals < 0, pvals > 1 or pvals contains NaNs