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

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

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

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

用于初始化 BitGenerator 的种子.如果为 None,则将从操作系统中提取新的、不可预测的熵.如果传递的是 intarray_like[ints],则它将被传递给 SeedSequence 以派生初始的 BitGenerator 状态.也可以传递一个 SeedSequence 实例.

备注

PCG-64 DXSM 是 O’Neill 排列同余生成器的一个 128 位实现([1],[Rad26d0f7d970-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 位无符号整数表示.

State and Seeding

PCG64DXSM 状态向量由2个无符号的128位值组成,这些值在外部表示为Python整数.一个是PRNG的状态,由线性同余生成器(LCG)推进.第二个是在LCG中使用的固定奇数增量.

输入种子由 SeedSequence 处理以生成这两个值.增量不是独立可设置的.

Parallel Features

在并行应用程序中使用 BitGenerator 的首选方法是使用 SeedSequence.spawn 方法获取熵值,并使用这些值生成新的 BitGenerator:

>>> from numpy.random import Generator, PCG64DXSM, SeedSequence
>>> sg = SeedSequence(1234)
>>> rg = [Generator(PCG64DXSM(s)) for s in sg.spawn(10)]

Compatibility Guarantee

PCG64DXSM 保证固定种子将始终生成相同的随机整数流.

参考文献

状态#

state

获取或设置 PRNG 状态

并行生成#

advance(delta)

推进底层随机数生成器,就像已经进行了 delta 次抽取一样.

jumped([jumps])

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

扩展#

cffi

CFFI 接口

ctypes

ctypes 接口