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

numpy.random。PCG64种子=#

PCG-64 伪随机数生成器的 BitGenerator。

参数
种子{None, int, array_like[ints], SeedSequence},可选

用于初始化 的种子BitGenerator。如果没有,那么将从操作系统中提取新的、不可预测的熵。如果传递了intor array_like[ints],则将传递它以 SeedSequence导出初始BitGenerator状态。也可能会通过一个SeedSequence实例。

笔记

PCG-64 是 O'Neill 置换同余生成器的 128 位实现([1][2])。 PCG-64 的周期为\(2^{128}\)并支持推进任意数量的步骤以及\(2^{127}\)溪流。我们使用的 PCG 系列的具体成员是 PCG XSL RR 128/64,如论文 ( [2] ) 中所述。

PCG64提供一个胶囊,其中包含生成双精度数以及无符号 32 和 64 位整数的函数指针。这些在 Python 中不能直接使用,必须由Generator 支持低级访问的对象或类似对象使用。

advance支持使RNG 前进任意步数的方法。 PCG-64 RNG 的状态由 2 128 位无符号整数表示。

状态和种子

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

输入种子经过处理以SeedSequence生成两个值。增量不可单独设置。

并行特性

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

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

兼容性保证

PCG64保证固定种子总是产生相同的随机整数流。

参考

状态

state

获取或设置 PRNG 状态

并行生成#

advance(三角洲)

推进基础 RNG,就好像 Delta 抽签已经发生一样。

jumped([跳跃])

返回状态跳转的新位生成器。

扩展#

cffi

CFFI接口

ctypes

ctypes接口