mersenne_twister_engine クラス
メルセンヌ ツイスタ アルゴリズムを基にして、品質の高い整数のランダム シーケンスを生成します。
template<class UIntType, size_t W, size_t N, size_t M, size_t R, UIntType A, size_t U, UIntType D, size_t S, UIntType B, size_t T, UIntType C, size_t L, UIntType F> class mersenne_twister_engine;
パラメーター
UIntType
結果を表す符号なし整数型。 使用可能な型については、「<random>」を参照してください。W
ワード サイズ。 状態シーケンスの各ワードのサイズ (ビット数)。 前提条件: 2u < W ≤ numeric_limits<UIntType>::digitsN
状態のサイズ。 状態シーケンス内の要素 (値) の数。M
シフト サイズ。 ひねりを加えるごとにスキップする要素の数。 前提条件: 0 < M ≤ NR
マスク ビット。 前提条件: R ≤ WA
XOR マスク。 前提条件: A ≤ (1u<<W) - 1uU, S, T, L
調律のシフト パラメーター。 スクランブル (調律) 時のシフト値として使用されます。 前提条件: U,S,T,L ≤ WD, B, C
調律のビット マスク パラメーター。 スクランブル (調律) 時のビット マスク値として使用されます。 前提条件: D,B,C ≤ (1u<<W) - 1uF
初期化乗数。 シーケンスの初期化を支援するために使用されます。 前提条件: F ≤ (1u<<W) - 1u
メンバー
mersenne_twister_engine::mersenne_twister_engine |
mersenne_twister_engine::min |
mersenne_twister_engine::discard |
mersenne_twister_engine::operator() |
mersenne_twister_engine::max |
mersenne_twister_engine::seed |
default_seed は、5489u として定義されているメンバー定数で、mersenne_twister_engine::seed および単一値コンストラクターの既定のパラメーター値として使用されます。 |
エンジンのメンバーの詳細については、「<random>」を参照してください。
解説
このテンプレート クラスは、閉区間 [0, 2W - 1] の値を返す乱数エンジンを表します。 - 1]. このエンジンは、W * (N - 1) + R ビットの大きな整数値を保持します。 この大きな値から一度に W ビットを抽出し、すべてのビットを使用し尽くすと、ビットをシフトし、混ぜ合わせることにより大きな値に "ひねり" を加えて、抽出元となる新しいビットの集合を作成します。 エンジンの状態は、operator() が少なくとも N 回呼び出された場合は、最後に使用された N W ビットの値になります。それ以外の場合は、使用された M W ビットの値およびシードの最後の N - M の値になります。
ジェネレーターは、シフト値 N と M、ひねり値 R、および条件付きの XOR マスク A で定義されている、ひねりを加えた汎用のフィードバック シフト レジスタを使用して、保持している大きな値にひねりを加えます。 さらに、生のシフト レジスタのビットは、値 U、D、S、B、T、C、および L で定義されるビットスクランブル用行列に従って、スクランブル (調律) されます。
テンプレート引数 UIntType には、最大 2W - 1 の値を保持するのに十分な大きさが必要です。 - 1. その他のテンプレート引数の値は、次の要件を満たしている必要があります。2u < W, 0 < M, M ≤ N, R ≤ W, U ≤ W, S ≤ W, T ≤ W, L ≤ W, W ≤ numeric_limits<UIntType>::digits, A ≤ (1u<<W) - 1u, B ≤ (1u<<W) - 1u, C ≤ (1u<<W) - 1u, D ≤ (1u<<W) - 1u, and F ≤ (1u<<W) - 1u
このエンジンから直接ジェネレーターを構築できますが、次の表にある定義済みの typedef のいずれかを使用することをお勧めします。
名前 |
説明 |
---|---|
mt19937 |
32 ビット メルセンヌ ツイスタ エンジン (松本、西村、1998年)。
|
mt19937_64 |
64 ビット メルセンヌ ツイスタ エンジン (松本、西村、2000年)。
|
メルセンヌ ツイスタ アルゴリズムの詳細については、Wikipedia の記事「メルセンヌ ツイスタ」を参照してください。
例
コード例については、「<random>」を参照してください。
必要条件
ヘッダー: <random>
名前空間: std