旧版随机数生成#

RandomState 提供对旧版生成器的访问。此生成器被认为是冻结的,不会再进行改进。它保证生成与 NumPy v1.16 的最终点版本产生的值相同。这些都依赖于 Box-Muller 正态分布或逆 CDF 指数分布或伽马分布。只有在必须使用与 NumPy 的先前版本生成的随机数相同的随机数时,才应使用此类。

RandomState 向状态添加了额外信息,这在使用 Box-Muller 正态分布时是必需的,因为这些分布成对产生。重要的是使用 RandomState.get_state,而不是底层位生成器的state,来访问状态,以便保存这些额外值。

虽然我们提供 MT19937 位生成器以便独立于 RandomState 使用,但请注意,它的默认播种使用 SeedSequence 而不是旧版播种算法。RandomState 将使用旧版播种算法。使用旧版播种算法的方法目前是私有的,因为使用它们的主要原因只是为了实现 RandomState。但是,可以使用 RandomState 的状态重置 MT19937 的状态。

from numpy.random import MT19937
from numpy.random import RandomState

rs = RandomState(12345)
mt19937 = MT19937()
mt19937.state = rs.get_state()
rs2 = RandomState(mt19937)

# Same output
rs.standard_normal()
rs2.standard_normal()

rs.random()
rs2.random()

rs.standard_exponential()
rs2.standard_exponential()
class numpy.random.RandomState(seed=None)#

慢速梅森旋转算法伪随机数生成器的容器。建议改为使用不同的 BitGenerator 和 Generator 容器。

RandomStateGenerator 提供了许多方法,用于生成从各种概率分布中抽取的随机数。除了特定于分布的参数外,每种方法都带有一个关键字参数size,默认为None。如果sizeNone,则生成并返回单个值。如果size是整数,则返回填充了生成值的 1-D 数组。如果size是元组,则填充并返回具有该形状的数组。

兼容性保证

使用固定种子和一系列对使用相同参数的“RandomState”方法的固定调用的固定位生成器将始终产生相同的结果,直至舍入误差,除非值不正确。RandomState实际上是冻结的,只会接收NumPy内部更改所需更新。更重大的更改(包括算法改进)保留给Generator

参数:
seed{None, int, array_like, BitGenerator}, 可选

用于初始化伪随机数生成器或已实例化的 BitGenerator 的随机种子。如果为整数或数组,则用作 MT19937 BitGenerator 的种子。值可以是 0 到 2**32 - 1(包含)之间的任何整数、此类整数的数组(或其他序列),或者 None(默认值)。如果 seedNone,则 MT19937 BitGenerator 将通过读取 /dev/urandom(如果可用)中的数据或从时钟获取种子来进行初始化。

备注

Python 标准库模块“random”也包含一个梅森旋转伪随机数生成器,它具有许多与 RandomState 中提供的类似的方法。RandomState 除了支持 NumPy 外,还具有提供更多概率分布选择的优势。

种子和状态#

get_state([legacy])

返回一个元组,表示生成器的内部状态。

set_state(state)

从元组设置生成器的内部状态。

seed([seed])

重新播种旧版 MT19937 BitGenerator

简单随机数据#

rand(d0, d1, ..., dn)

给定形状的随机值。

randn(d0, d1, ..., dn)

从“标准正态”分布返回样本(或样本)。

randint(low[, high, size, dtype])

返回从 low(包含)到 high(不包含)的随机整数。

random_integers(low[, high, size])

类型为 numpy.int_、介于 lowhigh(包含)之间的随机整数。

random_sample([size])

返回半开区间 [0.0, 1.0) 中的随机浮点数。

choice(a[, size, replace, p])

从给定的 1-D 数组生成随机样本。

bytes(length)

返回随机字节。

排列#

shuffle(x)

通过随机排列其内容来修改序列。

permutation(x)

随机排列序列,或返回一个排列的范围。

分布#

beta(a, b[, size])

从 Beta 分布中抽取样本。

binomial(n, p[, size])

从二项分布中抽取样本。

chisquare(df[, size])

从卡方分布中抽取样本。

dirichlet(alpha[, size])

从狄利克雷分布中抽取样本。

exponential([scale, size])

从指数分布中抽取样本。

f(dfnum, dfden[, size])

从 F 分布中抽取样本。

gamma(shape[, scale, size])

从 Gamma 分布中抽取样本。

geometric(p[, size])

从几何分布中抽取样本。

gumbel([loc, scale, size])

从 Gumbel 分布中抽取样本。

hypergeometric(ngood, nbad, nsample[, size])

从超几何分布中抽取样本。

laplace([loc, scale, size])

从具有指定位置(或均值)和尺度(衰减)的拉普拉斯或双指数分布中抽取样本。

logistic([loc, scale, size])

从逻辑分布中抽取样本。

lognormal([mean, sigma, size])

从对数正态分布中抽取样本。

logseries(p[, size])

从对数级数分布中抽取样本。

multinomial(n, pvals[, size])

从多项分布中抽取样本。

multivariate_normal(mean, cov[, size, ...])

从多元正态分布中抽取随机样本。

negative_binomial(n, p[, size])

从负二项分布中抽取样本。

noncentral_chisquare(df, nonc[, size])

从非中心卡方分布中抽取样本。

noncentral_f(dfnum, dfden, nonc[, size])

从非中心 F 分布中抽取样本。

normal([loc, scale, size])

从正态(高斯)分布中抽取随机样本。

pareto(a[, size])

从具有指定形状的 Pareto II 或 Lomax 分布中抽取样本。

poisson([lam, size])

从泊松分布中抽取样本。

power(a[, size])

从具有正指数 a - 1 的幂分布中抽取 [0, 1] 中的样本。

rayleigh([scale, size])

从瑞利分布中抽取样本。

standard_cauchy([size])

从模式 = 0 的标准柯西分布中抽取样本。

standard_exponential([size])

从标准指数分布中抽取样本。

standard_gamma(shape[, size])

从标准 Gamma 分布中抽取样本。

standard_normal([size])

从标准正态分布(均值=0,标准差=1)中抽取样本。

standard_t(df[, size])

从具有df自由度的标准学生t分布中抽取样本。

triangular(left, mode, right[, size])

从区间[left, right]上的三角分布中抽取样本。

uniform([low, high, size])

从均匀分布中抽取样本。

vonmises(mu, kappa[, size])

从冯·米塞斯分布中抽取样本。

wald(mean, scale[, size])

从Wald分布(或逆高斯分布)中抽取样本。

weibull(a[, size])

从韦伯分布中抽取样本。

zipf(a[, size])

从Zipf分布中抽取样本。

numpy.random中的函数#

上面许多RandomState方法都作为numpy.random中的函数导出。这种用法不推荐,因为它通过一个全局RandomState实例实现,出于两个原因不建议使用:

  • 它使用全局状态,这意味着结果会随着代码的变化而变化。

  • 它使用RandomState而不是更现代的Generator

出于向后兼容的遗留原因,我们不会更改这一点。

beta(a, b[, size])

从 Beta 分布中抽取样本。

binomial(n, p[, size])

从二项分布中抽取样本。

bytes(length)

返回随机字节。

chisquare(df[, size])

从卡方分布中抽取样本。

choice(a[, size, replace, p])

从给定的 1-D 数组生成随机样本。

dirichlet(alpha[, size])

从狄利克雷分布中抽取样本。

exponential([scale, size])

从指数分布中抽取样本。

f(dfnum, dfden[, size])

从 F 分布中抽取样本。

gamma(shape[, scale, size])

从 Gamma 分布中抽取样本。

geometric(p[, size])

从几何分布中抽取样本。

get_state([legacy])

返回一个元组,表示生成器的内部状态。

gumbel([loc, scale, size])

从 Gumbel 分布中抽取样本。

hypergeometric(ngood, nbad, nsample[, size])

从超几何分布中抽取样本。

laplace([loc, scale, size])

从具有指定位置(或均值)和尺度(衰减)的拉普拉斯或双指数分布中抽取样本。

logistic([loc, scale, size])

从逻辑分布中抽取样本。

lognormal([mean, sigma, size])

从对数正态分布中抽取样本。

logseries(p[, size])

从对数级数分布中抽取样本。

multinomial(n, pvals[, size])

从多项分布中抽取样本。

multivariate_normal(mean, cov[, size, ...])

从多元正态分布中抽取随机样本。

negative_binomial(n, p[, size])

从负二项分布中抽取样本。

noncentral_chisquare(df, nonc[, size])

从非中心卡方分布中抽取样本。

noncentral_f(dfnum, dfden, nonc[, size])

从非中心 F 分布中抽取样本。

normal([loc, scale, size])

从正态(高斯)分布中抽取随机样本。

pareto(a[, size])

从具有指定形状的 Pareto II 或 Lomax 分布中抽取样本。

permutation(x)

随机排列序列,或返回一个排列的范围。

poisson([lam, size])

从泊松分布中抽取样本。

power(a[, size])

从具有正指数 a - 1 的幂分布中抽取 [0, 1] 中的样本。

rand(d0, d1, ..., dn)

给定形状的随机值。

randint(low[, high, size, dtype])

返回从 low(包含)到 high(不包含)的随机整数。

randn(d0, d1, ..., dn)

从“标准正态”分布返回样本(或样本)。

random([size])

返回半开区间 [0.0, 1.0) 中的随机浮点数。

random_integers(low[, high, size])

类型为 numpy.int_、介于 lowhigh(包含)之间的随机整数。

random_sample([size])

返回半开区间 [0.0, 1.0) 中的随机浮点数。

ranf(*args, **kwargs)

这是random_sample的别名。

rayleigh([scale, size])

从瑞利分布中抽取样本。

sample(*args, **kwargs)

这是random_sample的别名。

seed([seed])

重新设置单例RandomState实例的种子。

set_state(state)

从元组设置生成器的内部状态。

shuffle(x)

通过随机排列其内容来修改序列。

standard_cauchy([size])

从模式 = 0 的标准柯西分布中抽取样本。

standard_exponential([size])

从标准指数分布中抽取样本。

standard_gamma(shape[, size])

从标准 Gamma 分布中抽取样本。

standard_normal([size])

从标准正态分布(均值=0,标准差=1)中抽取样本。

standard_t(df[, size])

从具有df自由度的标准学生t分布中抽取样本。

triangular(left, mode, right[, size])

从区间[left, right]上的三角分布中抽取样本。

uniform([low, high, size])

从均匀分布中抽取样本。

vonmises(mu, kappa[, size])

从冯·米塞斯分布中抽取样本。

wald(mean, scale[, size])

从Wald分布(或逆高斯分布)中抽取样本。

weibull(a[, size])

从韦伯分布中抽取样本。

zipf(a[, size])

从Zipf分布中抽取样本。