numpy.random.multinomial

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

从多项分布绘制样本。

多项分布是二项分布的多元泛化。进行p可能结果之一的实验。这样的实验的一个例子是投掷骰子,其中结果可以是1到6。Each sample drawn from the distribution represents n such experiments. 其值X_i = [X_0, X_1, t5> X_p]表示结果的次数i

参数:

n:int

实验次数。

pvals:浮点数,长度p

每个p不同结果的概率。这些应该总和为1(然而,只要sum(pvals [:-1]) 1)

size:int或tuple的整数,可选

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

返回:

out:ndarray

绘制的样本,如果提供的话,形状大小如果不是,则形状为(N,)

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

例子

投掷骰子20次:

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

它在1次降落4次,在2次降落1次。

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

>>> np.random.multinomial(20, [1/6.]*6, size=2)
array([[3, 4, 3, 3, 4, 3],
       [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])

概率输入应该归一化。作为实现细节,忽略最后一个条目的值,并假设它占用任何剩余概率质量,但这不应该依赖。一个偏好的硬币在一侧的重量是另一侧的两倍,应该这样取样:

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

不喜欢:

>>> np.random.multinomial(100, [1.0, 2.0])  # WRONG
array([100,   0])