方法
random.Generator.
multinomial
从多项式分布中提取样本。
多项式分布是二项分布的多元推广。用其中一个做实验 p 可能的结果。这种实验的一个例子是掷骰子,结果可以是1到6。从分布中提取的每个样本表示 n 这样的实验。它的价值观, X_i = [X_0, X_1, ..., X_p] ,表示结果的次数 i .
p
X_i = [X_0, X_1, ..., X_p]
i
实验次数。
每个的概率 p 不同的结果。它们的总和必须为1(但是,只要 sum(pvals[:-1]) <= 1) .
sum(pvals[:-1]) <= 1)
输出形状。如果给定的形状是,例如, (m, n, k) 然后 m * n * k 取样。默认值为无,在这种情况下返回单个值。
(m, n, k)
m * n * k
提取的样品,形状 size ,如果提供的话。如果不是,形状是 (N,) .
(N,)
换句话说,每个条目 out[i,j,...,:] 是从分布中提取的N维值。
out[i,j,...,:]
实例
掷骰子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