scipy.stats.Uniform.

sample#

Uniform.sample(shape=(), *, method=None, rng=None)[源代码]#

从分布中随机采样。

参数:
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]

抽样(统计学),维基百科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)