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 A方法 default_rng() 请参阅 快速启动 .

参数
n利息

实验次数。

pvals浮点数序列,长度p

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

sizeint或int的元组,可选

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

返回
out恩达雷

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

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

参见

Generator.multinomial

应该用于新代码。

实例

掷骰子20次:

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

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

现在,掷骰子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]])

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

加载的模具更有可能降落在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