scipy.stats.Binomial.

sample#

Binomial.sample(shape=(), *, method=None, rng=None)[source]#

从分布中抽取随机样本。

参数:
shape整数元组,默认值:()

要抽取的样本的形状。如果随机变量的基础分布的参数是形状为 param_shape 的数组,则输出数组的形状将为 shape + param_shape

method{None, ‘formula’, ‘inverse_transform’}

用于生成样本的策略。 默认情况下 (None),基础结构在以下选项之间进行选择,按优先级顺序列出。

  • 'formula':特定于分布的实现

  • 'inverse_transform':生成均匀分布的样本并返回这些参数下的逆 CDF。

并非所有 method 选项都适用于所有分布。如果选择的 method 不可用,则会引发 NotImplementedError`

rngnumpy.random.Generatorscipy.stats.QMCEngine, 可选

伪随机数或拟随机数生成器状态。当 rng 为 None 时,将使用来自操作系统的熵创建一个新的 numpy.random.Generator。 除了 numpy.random.Generatorscipy.stats.QMCEngine 之外的类型将传递给 numpy.random.default_rng 以实例化 Generator

如果 rng 是配置为使用扰乱的 scipy.stats.QMCEngine 的实例,并且 shape 不为空,那么结果沿第零轴的每个切片都是一个“准独立”的低差异序列; 也就是说,它们是可以被视为在统计上独立的用于大多数实际目的的不同序列。 对 sample 的单独调用会生成新的准独立的低差异序列。

参考文献

[1]

Sampling (statistics), Wikipedia, https://en.wikipedia.org/wiki/Sampling_(statistics)

示例

用所需的参数实例化分布

>>> import numpy as np
>>> from scipy import stats
>>> X = stats.Uniform(a=0., b=1.)

生成一个伪随机样本

>>> x = X.sample((1000, 1))
>>> octiles = (np.arange(8) + 1) / 8
>>> np.count_nonzero(x <= octiles, axis=0)
array([ 148,  263,  387,  516,  636,  751,  865, 1000])  # may vary
>>> X = stats.Uniform(a=np.zeros((3, 1)), b=np.ones(2))
>>> X.a.shape,
(3, 2)
>>> x = X.sample(shape=(5, 4))
>>> x.shape
(5, 4, 3, 2)