linear_congruential_engine クラス
線形合同法アルゴリズムでランダム シーケンスを生成します。
template<class UIntType, UIntType A, UIntType C, UIntType M> class linear_congruential_engine;
パラメーター
UIntType
結果を表す符号なし整数型。 使用可能な型については、「<random>」を参照してください。A
乗算。 前提条件: 「解説」を参照してください。C
インクリメント。 前提条件: 「解説」を参照してください。M
剰余。 前提条件: 「解説」を参照してください。
メンバー
linear_congruential_engine::linear_congruential_engine |
linear_congruential_engine::min |
linear_congruential_engine::discard |
linear_congruential_engine::operator() |
linear_congruential_engine::max |
linear_congruential_engine::seed |
default_seed は、1u として定義され、linear_congruential_engine::seed および単一値コンストラクターの既定のパラメーター値として使用されるメンバー定数です。 |
エンジンのメンバーの詳細については、「<random>」を参照してください。
解説
linear_congruential_engine テンプレート クラスは、最も単純なジェネレーター エンジンですが、速度や品質は最高というわけではありません。 このエンジンを改良したものが substract_with_carry_engine です。 これらのエンジンはいずれも、mersenne_twister_engine ほど高速ではなく、結果も高品質ではありません。
このエンジンは、漸化式 (周期) x(i) = (A * x(i-1) + C) mod M を使用して、ユーザー指定の符号なし整数型の値を生成します。
M が 0 の場合、この剰余演算に使用される値は numeric_limits<result_type>::max() + 1 です。 エンジンの状態は、最後に返された値か、または operator() に対して呼び出しが行われなかった場合はシード値になります。
M が 0 以外の場合、テンプレート引数 A と C の値は M 未満である必要があります。
このエンジンから直接ジェネレーターを構築できますが、次の表にある定義済みの typedef のいずれかを使用することもできます。
名前 |
説明 |
---|---|
minstd_rand0 |
1988 年の最小標準エンジン (ルイス、グッドマン、ミラー、1969 年)。
|
minstd_rand |
minstd_rand0 の改良版最小標準エンジン (パーク、ミラー、ストックマイヤー、1993 年)。
|
線形合同法エンジン アルゴリズムの詳細については、Wikipedia の記事「線形合同法」を参照してください。
必要条件
ヘッダー: <random>
名前空間: std