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

class numpy.random.PCG64(seed=None)

用于PCG-64伪随机数生成器的位生成器。

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

初始化的种子 BitGenerator . 如果没有,那么新的,不可预测的熵将从操作系统中提取。如果 intarray_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 int。一个是PRNG的状态,由线性同余发生器(LCG)推进。第二个是LCG中使用的固定奇数增量。

输入种子由 SeedSequence 生成两个值。增量不能独立设置。

平行特征

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

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

兼容性保证

PCG64 保证一个固定的种子和将始终产生相同的随机整数流。

工具书类

1

"PCG, A Family of Better Random Number Generators"

2(1,2)

奥尼尔,梅丽莎E。 "PCG: A Family of Simple Fast Space-Efficient Statistically Good Algorithms for Random Number Generation"

state 

获取或设置PRNG状态

并联发电

advance \(增量)

推进基础RNG,如同已发生增量绘制。

jumped \ [jumps] )

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

延伸

cffi 

CFFI接口

ctypes 

ctypes接口