次の方法で共有


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 年)。

typedef linear_congruential_engine<unsigned int, 16807, 0, 2147483647> minstd_rand0;

minstd_rand

minstd_rand0 の改良版最小標準エンジン (パーク、ミラー、ストックマイヤー、1993 年)。

typedef linear_congruential_engine<unsigned int, 48271, 0, 2147483647> minstd_rand;

線形合同法エンジン アルゴリズムの詳細については、Wikipedia の記事「線形合同法」を参照してください。

必要条件

ヘッダー: <random>

名前空間: std

参照

関連項目

<random>