排列同餘產生器 (64 位元,PCG64 DXSM)#
- class numpy.random.PCG64DXSM(seed=None)#
PCG-64 DXSM 虛擬亂數產生器的 BitGenerator。
- 參數::
- seed{None, int, array_like[ints], SeedSequence}, 選項性
用於初始化
BitGenerator
的種子。如果為 None,則會從作業系統提取新的、不可預測的熵。如果傳遞int
或array_like[ints]
,則會將其傳遞給SeedSequence
以導出初始BitGenerator
狀態。也可以傳入SeedSequence
實例。
註解
PCG-64 DXSM 是 O’Neill 的排列同餘產生器 ([1], [2]) 的 128 位元實作。PCG-64 DXSM 的週期為 \(2^{128}\),並支援推進任意步數以及 \(2^{127}\) 個串流。我們使用的 PCG 系列特定成員是 PCG CM DXSM 128/64。它與
PCG64
的不同之處在於,它使用更強大的 DXSM 輸出函數、LCG 中的 64 位元「廉價乘法器」,並從推進前的狀態輸出,而不是推進後輸出。PCG64DXSM
提供一個膠囊,其中包含產生雙精度浮點數和無號 32 位元和 64 位元整數的函數指標。這些不能在 Python 中直接使用,必須由支援低階存取的Generator
或類似物件使用。支援方法
advance
,以將 RNG 推進任意步數。PCG-64 DXSM RNG 的狀態由 2 個 128 位元無號整數表示。狀態與種子設定
PCG64DXSM
狀態向量由 2 個無號 128 位元值組成,這些值在外部表示為 Python 整數。一個是 PRNG 的狀態,它由線性同餘產生器 (LCG) 推進。第二個是在 LCG 中使用的固定奇數增量。輸入種子由
SeedSequence
處理以產生兩個值。增量不可獨立設定。平行功能
在平行應用中使用 BitGenerator 的首選方式是使用
SeedSequence.spawn
方法取得熵值,並使用這些值來產生新的 BitGenerator>>> from numpy.random import Generator, PCG64DXSM, SeedSequence >>> sg = SeedSequence(1234) >>> rg = [Generator(PCG64DXSM(s)) for s in sg.spawn(10)]
相容性保證
PCG64DXSM
保證固定的種子始終產生相同的隨機整數串流。參考文獻
[2]O’Neill, Melissa E. “PCG:用於亂數生成的簡單、快速、空間效率高且統計上良好的演算法系列”
狀態#
取得或設定 PRNG 狀態 |