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])