置换同余生成器(64 位,PCG64 DXSM)#
- 类 numpy.random。PCG64DXSM(种子=无)#
PCG-64 DXSM 伪随机数生成器的 BitGenerator。
- 参数:
- 种子{None, int, array_like[ints], SeedSequence},可选
用于初始化 的种子
BitGenerator
。如果没有,那么将从操作系统中提取新的、不可预测的熵。如果传递了int
orarray_like[ints]
,则将传递它以SeedSequence
导出初始BitGenerator
状态。也可能会通过一个SeedSequence
实例。
笔记
PCG-64 DXSM 是 O'Neill 置换同余生成器的 128 位实现([1]、[2])。 PCG-64 DXSM 的周期为\(2^{128}\)并支持推进任意数量的步骤以及\(2^{127}\)溪流。我们使用的 PCG 系列的特定成员是 PCG CM DXSM 128/64。它的不同之处
PCG64
在于它使用了更强的DXSM输出功能,即LCG中的64位“廉价乘法器”,并且从前进之前的状态输出,而不是前进然后输出。PCG64DXSM
提供一个胶囊,其中包含生成双精度数以及无符号 32 和 64 位整数的函数指针。这些在 Python 中不能直接使用,必须由Generator
支持低级访问的对象或类似对象使用。advance
支持使RNG 前进任意步数的方法。 PCG-64 DXSM RNG 的状态由 2 128 位无符号整数表示。状态和种子
状态
PCG64DXSM
向量由 2 个无符号 128 位值组成,这些值在外部表示为 Python 整数。一是 PRNG 的状态,它由线性同余发生器 (LCG) 推进。第二个是 LCG 中使用的固定奇数增量。输入种子经过处理以
SeedSequence
生成两个值。增量不可单独设置。并行特性
在并行应用程序中使用 BitGenerator 的首选方法是使用该
SeedSequence.spawn
方法获取熵值,并使用这些值生成新的 BitGenerator:>>> from numpy.random import Generator, PCG64DXSM, SeedSequence >>> sg = SeedSequence(1234) >>> rg = [Generator(PCG64DXSM(s)) for s in sg.spawn(10)]
兼容性保证
PCG64DXSM
保证固定种子总是产生相同的随机整数流。参考
[ 1 ][ 2 ]O'Neill, Melissa E. “PCG:一系列简单、快速、节省空间、统计良好的随机数生成算法”
状态#
获取或设置 PRNG 状态 |
并行生成#
|
推进基础 RNG,就好像 Delta 抽签已经发生一样。 |
|
返回状态跳转的新位生成器。 |
扩展#
CFFI接口 |
|
ctypes接口 |