排列同餘產生器 (64 位元,PCG64 DXSM)#

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

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

參數::
seed{None, int, array_like[ints], SeedSequence}, 選項性

用於初始化 BitGenerator 的種子。如果為 None,則會從作業系統提取新的、不可預測的熵。如果傳遞 intarray_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 保證固定的種子始終產生相同的隨機整數串流。

參考文獻

狀態#

狀態

取得或設定 PRNG 狀態

平行生成#

advance(delta)

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

jumped([jumps])

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

擴展#

cffi

CFFI 介面

ctypes

ctypes 介面