旧式随机生成#
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)#
慢速梅森旋转伪随机数生成器的容器。请考虑使用
Generator
容器以及不同的比特生成器。RandomState
和Generator
提供了许多方法,用于生成从各种概率分布中抽取的随机数。除了与分布相关的参数外,每个方法都接受一个关键字参数 size,其默认值为None
。如果 size 为None
,则生成并返回一个单一值。如果 size 是一个整数,则返回一个填充了生成值的 1-D 数组。如果 size 是一个元组,则填充并返回一个具有该形状的数组。兼容性保证
一个固定的比特生成器,使用固定的种子和固定的一系列对 'RandomState' 方法的调用,使用相同的参数,总是会产生相同的结果,除了当值不正确时会存在舍入误差。
RandomState
实际上已被冻结,只会接收因 Numpy 内部变化而必要的更新。更实质性的更改,包括算法改进,保留给Generator
。- 参数:
注释
Python 标准库模块 “random” 也包含一个梅森旋转伪随机数生成器,其许多方法与
RandomState
中可用的方法相似。RandomState
除了具有 NumPy 意识之外,其优势在于它提供了更多可供选择的概率分布。
播种和状态#
简单随机数据#
|
给定形状的随机值。 |
|
返回“标准正态”分布的一个或多个样本。 |
|
返回从 low(包含)到 high(不包含)的随机整数。 |
|
类型为 |
|
返回半开区间 [0.0, 1.0) 中的随机浮点数。 |
|
从给定的一维数组生成随机样本 |
|
返回随机字节。 |
排列#
|
通过打乱内容就地修改序列。 |
|
随机排列序列,或返回一个排列后的范围。 |
分布#
|
从 Beta 分布中抽取样本。 |
|
从二项分布中抽取样本。 |
|
从卡方分布中抽取样本。 |
|
从 Dirichlet 分布中抽取样本。 |
|
从指数分布中抽取样本。 |
|
从 F 分布中抽取样本。 |
|
从 Gamma 分布中抽取样本。 |
|
从几何分布中抽取样本。 |
|
从 Gumbel 分布中抽取样本。 |
|
从超几何分布中抽取样本。 |
|
从具有指定位置(或均值)和尺度(衰减)的 Laplace 或双指数分布中抽取样本。 |
|
从 Logistic 分布中抽取样本。 |
|
从对数正态分布中抽取样本。 |
|
从对数级数分布中抽取样本。 |
|
从多项分布中抽取样本。 |
|
从多元正态分布中抽取随机样本。 |
|
从负二项分布中抽取样本。 |
|
从非中心卡方分布中抽取样本。 |
|
从非中心 F 分布中抽取样本。 |
|
从正态(高斯)分布中抽取随机样本。 |
|
从具有指定形状的 Pareto II 或 Lomax 分布中抽取样本。 |
|
从泊松分布中抽取样本。 |
|
从具有正指数 a - 1 的幂分布中抽取 [0, 1] 范围内的样本。 |
|
从瑞利分布中抽取样本。 |
|
从标准柯西分布中抽取样本,众数 = 0。 |
|
从标准指数分布中抽取样本。 |
|
从标准伽马分布中抽取样本。 |
|
从标准正态分布中抽取样本(均值=0,标准差=1)。 |
|
从具有 df 自由度的标准学生 t 分布中抽取样本。 |
|
在区间 |
|
从均匀分布中抽取样本。 |
|
从 von Mises 分布中抽取样本。 |
|
从 Wald 或逆高斯分布中抽取样本。 |
|
从 Weibull 分布中抽取样本。 |
|
从 Zipf 分布中抽取样本。 |
numpy.random
中的函数#
上述许多 RandomState 方法在 numpy.random
中作为函数导出。不鼓励这种用法,因为它通过一个全局 RandomState
实例实现,这有两个不建议的原因:
它使用全局状态,这意味着结果将随代码更改而改变
它使用
RandomState
而不是更现代的Generator
。
为了向后兼容的遗留原因,我们不会改变这一点。
|
从 Beta 分布中抽取样本。 |
|
从二项分布中抽取样本。 |
|
返回随机字节。 |
|
从卡方分布中抽取样本。 |
|
从给定的一维数组生成随机样本 |
|
从 Dirichlet 分布中抽取样本。 |
|
从指数分布中抽取样本。 |
|
从 F 分布中抽取样本。 |
|
从 Gamma 分布中抽取样本。 |
|
从几何分布中抽取样本。 |
|
返回表示生成器内部状态的元组。 |
|
从 Gumbel 分布中抽取样本。 |
|
从超几何分布中抽取样本。 |
|
从具有指定位置(或均值)和尺度(衰减)的 Laplace 或双指数分布中抽取样本。 |
|
从 Logistic 分布中抽取样本。 |
|
从对数正态分布中抽取样本。 |
|
从对数级数分布中抽取样本。 |
|
从多项分布中抽取样本。 |
|
从多元正态分布中抽取随机样本。 |
|
从负二项分布中抽取样本。 |
|
从非中心卡方分布中抽取样本。 |
|
从非中心 F 分布中抽取样本。 |
|
从正态(高斯)分布中抽取随机样本。 |
|
从具有指定形状的 Pareto II 或 Lomax 分布中抽取样本。 |
|
随机排列序列,或返回一个排列后的范围。 |
|
从泊松分布中抽取样本。 |
|
从具有正指数 a - 1 的幂分布中抽取 [0, 1] 范围内的样本。 |
|
给定形状的随机值。 |
|
返回从 low(包含)到 high(不包含)的随机整数。 |
|
返回“标准正态”分布的一个或多个样本。 |
|
返回半开区间 [0.0, 1.0) 中的随机浮点数。 |
|
类型为 |
|
返回半开区间 [0.0, 1.0) 中的随机浮点数。 |
|
这是 |
|
从瑞利分布中抽取样本。 |
|
这是 |
|
重新播种单例 RandomState 实例。 |
|
从元组设置生成器的内部状态。 |
|
通过打乱内容就地修改序列。 |
|
从标准柯西分布中抽取样本,众数 = 0。 |
|
从标准指数分布中抽取样本。 |
|
从标准伽马分布中抽取样本。 |
|
从标准正态分布中抽取样本(均值=0,标准差=1)。 |
|
从具有 df 自由度的标准学生 t 分布中抽取样本。 |
|
在区间 |
|
从均匀分布中抽取样本。 |
|
从 von Mises 分布中抽取样本。 |
|
从 Wald 或逆高斯分布中抽取样本。 |
|
从 Weibull 分布中抽取样本。 |
|
从 Zipf 分布中抽取样本。 |