置换同余生成器(64 位,PCG64)#
- 类 numpy.random。PCG64(种子=无)#
PCG-64 伪随机数生成器的 BitGenerator。
- 参数:
- 种子{None, int, array_like[ints], SeedSequence},可选
用于初始化 的种子
BitGenerator
。如果没有,那么将从操作系统中提取新的、不可预测的熵。如果传递了int
orarray_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
保证固定种子总是产生相同的随机整数流。参考
[ 1 ]
状态#
获取或设置 PRNG 状态 |
并行生成#
|
推进基础 RNG,就好像 Delta 抽签已经发生一样。 |
|
返回状态跳转的新位生成器。 |
扩展#
CFFI接口 |
|
ctypes接口 |