dask.array.random.multinomial
dask.array.random.multinomial¶
- dask.array.random.multinomial(*args, **kwargs)¶
从多项分布中抽取样本。
此文档字符串是从 numpy.random.mtrand.RandomState.multinomial 复制的。
Dask 版本可能存在一些不一致性。
多项分布是二项分布的多变量推广。考虑一个有
p
种可能结果的实验。例如,掷骰子就是一个这样的实验,结果可以是1到6中的任意一个。从分布中抽取的每个样本代表 n 次这样的实验。其值X_i = [X_0, X_1, ..., X_p]
表示结果为i
的次数。备注
新代码应使用 ~numpy.random.Generator 实例的 ~numpy.random.Generator.multinomial 方法;请参阅 Quick start。
警告
此函数默认使用 C-long 数据类型,在 Windows 上为 32 位,在 64 位平台上为 64 位(在 32 位平台上为 32 位)。自 NumPy 2.0 起,NumPy 的默认整数在 32 位平台上为 32 位,在 64 位平台上为 64 位。
- 参数
- n整数
实验次数。
- pvals浮点数序列,长度为 p
每个
p
不同结果的概率。这些概率必须总和为1(然而,只要sum(pvals[:-1]) <= 1
,最后一个元素总是被假定为剩余概率的值)。- 大小int 或 int 的元组,可选
输出形状。如果给定的形状是,例如,
(m, n, k)
,那么会抽取m * n * k
个样本。默认是 None,在这种情况下会返回一个单一值。
- 返回
- 出ndarray
绘制的样本,形状为 size,如果提供了该参数。如果没有提供,形状为
(N,)
。换句话说,每个条目
out[i,j,...,:]
是从分布中抽取的N维值。
参见
random.Generator.multinomial
应用于新代码。
示例
掷骰子20次:
>>> np.random.multinomial(20, [1/6.]*6, size=1) array([[4, 1, 7, 5, 2, 1]]) # random
它在1上降落了4次,在2上降落了1次,等等。
现在,掷骰子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