エンジン (基本乱数生成器)

エンジン (基本乱数生成器)#

oneMKL RNG は、データ並列 C++ (DPC++) 用の疑似乱数、準乱数、非決定論的乱数生成器を提供します。

ルーチン

説明

mrg32k3a

複合多重再帰擬似乱数生成器 MRG32k3a [L’Ecuyer99a]

philox4x32x10

Philox4x32-10 カウンタベースの擬似乱数生成器 (周期 \(2^{128}\)) PHILOX4X32X10 [Salmon11]

mcg31m1

31 ビット乗法合同型疑似乱数生成器 MCG (\(1132489760, 2^{32} - -1\)) [L’Ecuyer99a]

r250

32 ビット一般化フィードバック・シフト・レジスター疑似乱数生成器 GFSR(250,103) [[Kirkpatrick81]]

mcg59

NAG Numerical Libraries [NAG] の 59 ビット乗法合同型疑似乱数ジェネレータ MCG (\(13^{13}, 2^{59}\))。

wichmann_hill

NAG Numerical Libraries [NAG] の Wichmann-Hill 疑似乱数生成器 (273 個の基本生成器のセット)。

mt19937

生成されたシーケンスの周期長 \(2^{19937} - -1\) を持つメルセンヌツイスター擬似乱数生成器 MT19937 [[Matsumoto98]]。

mt2203

6024 個のメルセンヌツイスター疑似乱数生成器のセット MT2203 [Matsumoto98][Matsumoto00]。それぞれ、周期長が \(2^{2203} -1\) に等しいシーケンスを生成します。生成器のパラメーターは、対応するシーケンスの相互独立性を提供します。

sfmt19937

SIMD 指向の高速メルセンヌツイスター擬似乱数生成器 SFMT19937。 [Saito08] の周期長は生成されたシーケンスの \(2^{19937} -1\) に等しくなります。

sobol

任意の次元で動作する Sobol 準乱数生成器 [Sobol76][Bratley88]

niederreiter

任意の次元で動作する Niederreiter 準乱数生成器 [Bratley92]。

ars5

ARS-5 カウンターベースの擬似乱数生成器。周期は \(2^{128}\) で、AES-NI セット ARS5 [[Salmon11]] の命令を使用します。

nondeterministic

非決定性乱数生成器 (RDRAND ベース) [AVX][IntelSWMan]

いくつかの基本生成器で oneMKL RNG は、マルチプロセッサー計算で独立した状態を作成する 2 つの方法 (リープフロッグ法とブロック分割法) を提供します。これらのシーケンス分割方法は、シーケンシャル・モンテカルロでも役立ちます。これらの関数の説明については、サービスルーチンのセクションを参照してください。

さらに、MT2203 疑似乱数生成器は、並列モンテカルロ・シミュレーションで使用できる最大 6024 個の独立したランダムシーケンスを作成するように設計された 6024 個の生成器のセットです。同じ機能を備えた別の生成器には Wichmann-Hill があります。最大 273 個の独立したランダムストリームを作成できます。並列計算用に設計された生成器の特性については [Coddington94] で詳しく説明されています。

詳細については VS ノートを参照してください。