Permuted congruential generator (64 位元,PCG64)#
- class numpy.random.PCG64(seed=None)#
PCG-64 虛擬亂數產生器的 BitGenerator。
- 參數:
- seed{None, int, array_like[ints], SeedSequence}, optional
用於初始化
BitGenerator
的種子。如果為 None,則會從作業系統提取新的、不可預測的熵。如果傳入int
或array_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
保證固定的種子始終產生相同的隨機整數流。參考文獻
狀態#
取得或設定 PRNG 狀態 |