Permuted congruential generator (64 位元,PCG64)#

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

PCG-64 虛擬亂數產生器的 BitGenerator。

參數:
seed{None, int, array_like[ints], SeedSequence}, optional

用於初始化 BitGenerator 的種子。如果為 None,則會從作業系統提取新的、不可預測的熵。如果傳入 intarray_like[ints],則會將其傳遞給 SeedSequence 以衍生初始 BitGenerator 狀態。也可以傳入 SeedSequence 實例。

註解

PCG-64 是 O’Neill 的排列同餘產生器 ([1], [2]) 的 128 位元實作。PCG-64 的週期為 \(2^{128}\),並支援推進任意步數以及 \(2^{127}\) 個流。我們使用的 PCG 家族的特定成員是論文 ([2]) 中描述的 PCG XSL RR 128/64。

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(delta)

推進底層 RNG,如同發生 delta 次提取。

jumped([jumps])

傳回狀態已跳躍的新位元產生器。

擴充#

cffi

CFFI 介面

ctypes

ctypes 介面