置换同余生成器(64位,PCG64)#
- class numpy.random.PCG64(seed=None)#
用于 PCG-64 伪随机数生成器的 BitGenerator.
- 参数:
- seed{None, int, array_like[ints], SeedSequence}, 可选
用于初始化
BitGenerator的种子.如果为 None,则将从操作系统中提取新的、不可预测的熵.如果传递的是int或array_like[ints],则它将被传递给SeedSequence以派生初始的BitGenerator状态.也可以传递一个SeedSequence实例.
备注
PCG-64 是 O’Neill 排列同余生成器的一个 128 位实现([1],[R4523891264fe-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 位无符号整数表示.State and Seeding
PCG64状态向量由2个无符号的128位值组成,这些值在外部表示为Python整数.一个是PRNG的状态,由线性同余生成器(LCG)推进.第二个是在LCG中使用的固定奇数增量.输入种子由
SeedSequence处理以生成这两个值.增量不是独立可设置的.Parallel Features
在并行应用程序中使用 BitGenerator 的首选方法是使用
SeedSequence.spawn方法获取熵值,并使用这些值生成新的 BitGenerator:>>> from numpy.random import Generator, PCG64, SeedSequence >>> sg = SeedSequence(1234) >>> rg = [Generator(PCG64(s)) for s in sg.spawn(10)]
Compatibility Guarantee
PCG64保证一个固定的种子总是会产生相同的随机整数流.参考文献
[2]O’Neill, Melissa E. “PCG: 一种简单、快速、空间高效、统计上良好的随机数生成算法家族”
状态#
获取或设置 PRNG 状态 |