置换同余生成器 (64-bit, PCG64 DXSM)#

class numpy.random.PCG64DXSM(seed=None)#

用于 PCG-64 DXSM 伪随机数生成器的 BitGenerator.

参数:
seed{None, int, array_like[ints], SeedSequence}, optional

用于初始化 BitGenerator 的种子. 如果为 None,则将从操作系统中提取新鲜的,不可预测的熵. 如果传递一个 intarray_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 保证固定的种子始终产生相同的随机整数流.

参考

状态#

state 

获取或设置 PRNG 状态

并行生成#

advance (delta)

提前底层 RNG,就像发生了 delta 次抽取一样.

jumped ([jumps])

返回一个状态被跳跃的新位生成器.

扩展#

cffi 

CFFI 接口

ctypes 

ctypes 接口