旧版随机数生成#
RandomState
提供对旧版生成器的访问。此生成器被视为冻结,不会再进行任何改进。它保证产生与 NumPy v1.16 的最终点版本中产生的值相同的值。这些都依赖于 Box-Muller 正态分布或逆 CDF 指数分布或伽马分布。此类仅应在必须具有与 NumPy 的先前版本产生的随机数相同的随机数时使用。
RandomState
向状态添加了额外信息,这在使用 Box-Muller 正态分布时是必需的,因为这些正态分布成对产生。在访问状态时,使用 RandomState.get_state
而不是底层位生成器 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 与 Generator 容器结合使用。
RandomState
和Generator
公开了许多用于生成从各种概率分布中抽取的随机数的方法。除了特定于分布的参数之外,每种方法都带有一个关键字参数 size,默认为None
。如果 size 为None
,则生成并返回单个值。如果 size 是一个整数,则返回一个填充了生成值的 1-D 数组。如果 size 是一个元组,则返回一个填充了该形状的数组。兼容性保证
使用固定种子和固定调用序列以相同参数调用 “RandomState” 方法的固定位生成器,始终会产生相同的结果,直到舍入误差为止,除非值不正确。
RandomState
实际上是冻结的,只会接收 NumPy 内部更改所需的更新。更重大的更改(包括算法改进)保留给Generator
。- 参数:
注释
Python stdlib 模块 “random” 还包含一个梅森旋转伪随机数生成器,它具有一些与
RandomState
中提供的类似的方法。除了支持 NumPy 外,RandomState
的优势在于它提供了更多的概率分布供选择。
播种和状态#
简单随机数据#
|
给定形状的随机值。 |
|
返回来自 “标准正态” 分布的样本(或样本)。 |
|
返回从 low(含)到 high(不含)的随机整数。 |
|
类型为 |
|
返回半开区间 [0.0, 1.0) 中的随机浮点数。 |
|
从给定的 1-D 数组生成随机样本 |
|
返回随机字节。 |
排列#
|
通过对序列的内容进行洗牌来就地修改序列。 |
|
随机排列序列,或返回排列后的范围。 |
分布#
|
从 Beta 分布中抽取样本。 |
|
从二项分布中抽取样本。 |
|
从卡方分布中抽取样本。 |
|
从狄利克雷分布中抽取样本。 |
|
从指数分布中抽取样本。 |
|
从 F 分布中抽取样本。 |
|
从Gamma分布中抽取样本。 |
|
从几何分布中抽取样本。 |
|
从Gumbel分布中抽取样本。 |
|
从超几何分布中抽取样本。 |
|
从拉普拉斯分布或双指数分布中抽取样本,指定位置(或均值)和尺度(衰减)。 |
|
从逻辑斯蒂分布中抽取样本。 |
|
从对数正态分布中抽取样本。 |
|
从对数级数分布中抽取样本。 |
|
从多项式分布中抽取样本。 |
|
从多元正态分布中抽取随机样本。 |
|
从负二项分布中抽取样本。 |
|
从非中心卡方分布中抽取样本。 |
|
从非中心F分布中抽取样本。 |
|
从正态(高斯)分布中抽取随机样本。 |
|
从指定形状的帕累托II或Lomax分布中抽取样本。 |
|
从泊松分布中抽取样本。 |
|
从[0, 1]中具有正指数a - 1的幂分布中抽取样本。 |
|
从瑞利分布中抽取样本。 |
|
从模式为0的标准柯西分布中抽取样本。 |
|
从标准指数分布中抽取样本。 |
|
从标准Gamma分布中抽取样本。 |
|
从标准正态分布(均值=0,标准差=1)中抽取样本。 |
|
从具有df自由度的标准学生t分布中抽取样本。 |
|
从 |
|
从均匀分布中抽取样本。 |
|
从冯米塞斯分布中抽取样本。 |
|
从沃尔德分布或逆高斯分布中抽取样本。 |
|
从威布尔分布中抽取样本。 |
|
从齐夫分布中抽取样本。 |
函数在 numpy.random
#
上面许多RandomState方法都作为函数导出到 numpy.random
中。这种用法不鼓励,因为它通过全局 RandomState
实例实现,从两个方面来看不建议这样做
它使用全局状态,这意味着结果会随着代码的更改而改变
它使用
RandomState
而不是更现代的Generator
.
出于向后兼容的遗留原因,我们不会更改此内容。
|
从 Beta 分布中抽取样本。 |
|
从二项分布中抽取样本。 |
|
返回随机字节。 |
|
从卡方分布中抽取样本。 |
|
从给定的 1-D 数组生成随机样本 |
|
从狄利克雷分布中抽取样本。 |
|
从指数分布中抽取样本。 |
|
从 F 分布中抽取样本。 |
|
从Gamma分布中抽取样本。 |
|
从几何分布中抽取样本。 |
|
返回表示生成器内部状态的元组。 |
|
从Gumbel分布中抽取样本。 |
|
从超几何分布中抽取样本。 |
|
从拉普拉斯分布或双指数分布中抽取样本,指定位置(或均值)和尺度(衰减)。 |
|
从逻辑斯蒂分布中抽取样本。 |
|
从对数正态分布中抽取样本。 |
|
从对数级数分布中抽取样本。 |
|
从多项式分布中抽取样本。 |
|
从多元正态分布中抽取随机样本。 |
|
从负二项分布中抽取样本。 |
|
从非中心卡方分布中抽取样本。 |
|
从非中心F分布中抽取样本。 |
|
从正态(高斯)分布中抽取随机样本。 |
|
从指定形状的帕累托II或Lomax分布中抽取样本。 |
|
随机排列序列,或返回排列后的范围。 |
|
从泊松分布中抽取样本。 |
|
从[0, 1]中具有正指数a - 1的幂分布中抽取样本。 |
|
给定形状的随机值。 |
|
返回从 low(含)到 high(不含)的随机整数。 |
|
返回来自 “标准正态” 分布的样本(或样本)。 |
|
返回半开区间 [0.0, 1.0) 中的随机浮点数。 |
|
类型为 |
|
返回半开区间 [0.0, 1.0) 中的随机浮点数。 |
|
这是 |
|
从瑞利分布中抽取样本。 |
|
这是 |
|
重新设置单例 RandomState 实例的种子。 |
|
从元组设置生成器的内部状态。 |
|
通过对序列的内容进行洗牌来就地修改序列。 |
|
从模式为0的标准柯西分布中抽取样本。 |
|
从标准指数分布中抽取样本。 |
|
从标准Gamma分布中抽取样本。 |
|
从标准正态分布(均值=0,标准差=1)中抽取样本。 |
|
从具有df自由度的标准学生t分布中抽取样本。 |
|
从 |
|
从均匀分布中抽取样本。 |
|
从冯米塞斯分布中抽取样本。 |
|
从沃尔德分布或逆高斯分布中抽取样本。 |
|
从威布尔分布中抽取样本。 |
|
从齐夫分布中抽取样本。 |