旧版随机数生成#

RandomState 提供了对旧版生成器的访问.此生成器被认为是冻结的,并且不会再进行改进. 它保证产生与 NumPy v1.16 的最终点发布版本相同的值. 这些都依赖于 Box-Muller 正态分布或逆 CDF 指数或伽玛分布. 仅当需要与以前版本的 NumPy 产生的随机数完全相同时,才应使用此类.

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

尽管我们提供了 MT19937 BitGenerator 以独立于 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.

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

兼容性保证

一个使用固定种子和一系列使用相同参数调用 ‘RandomState’ 方法的固定位生成器,除了值错误外,总是会产生相同的结果(直到舍入误差). RandomState 实际上是被冻结的,只会接收 Numpy 内部变化所需的更新.更实质性的更改,包括算法的改进,将保留给 Generator .

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

用于初始化伪随机数生成器的随机种子或实例化的BitGenerator.如果是一个整数或数组,则用作MT19937 BitGenerator的种子.该值可以是0到232 - 1(包括)之间的任何整数,此类整数的数组(或其他序列),或者 None (默认值).如果 seedNone ,则 MT19937 BitGenerator通过从 /dev/urandom (或Windows类似物)读取数据(如果可用)或从时钟播种来初始化.

注释

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])

lowhigh 之间的 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])

从 Dirichlet 分布中抽取样本.

exponential ([scale, size])

从指数分布中抽取样本.

f (dfnum, dfden[, size])

从 F 分布中抽取样本.

gamma (shape[, scale, size])

从伽马分布中抽取样本.

geometric (p[, size])

从几何分布中抽取样本.

gumbel ([loc, scale, size])

从耿贝尔分布中抽取样本.

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])

从 mode = 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])

从 von Mises 分布中抽取样本.

wald (mean, scale[, size])

从 Wald 或逆高斯分布中抽取样本.

weibull (a[, size])

从 Weibull 分布中抽取样本.

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])

从 Dirichlet 分布中抽取样本.

exponential ([scale, size])

从指数分布中抽取样本.

f (dfnum, dfden[, size])

从 F 分布中抽取样本.

gamma (shape[, scale, size])

从伽马分布中抽取样本.

geometric (p[, size])

从几何分布中抽取样本.

get_state ([legacy])

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

gumbel ([loc, scale, size])

从耿贝尔分布中抽取样本.

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])

lowhigh 之间的 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])

从 mode = 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])

从 von Mises 分布中抽取样本.

wald \(mean, scale[, size])

从 Wald 或逆高斯分布中抽取样本.

weibull \(a[, size])

从 Weibull 分布中抽取样本.

zipf \(a[, size])

从 Zipf 分布中抽取样本.