subtract_with_carry_engine クラス
キャリー付き減算アルゴリズムでランダム シーケンスを生成します。
template<class UIntType,
int W, int S, int R>
class subtract_with_carry_engine {
public:
typedef UIntType result_type;
static const int word_size = W;
static const int short_lag = S;
static const int long_lag = R;
static const UIntType default_seed = 19780503U;
explicit subtract_with_carry_engine(UIntType x0 = default_seed);
explicit subtract_with_carry_engine(seed_seq& seq);
void seed(UIntType x0 = default_seed);
void seed(seed_seq& seq);
static const result_type min();
static const result_type max();
result_type operator()();
void discard(unsigned long long count)();
};
パラメーター
UIntType
結果を表す整数型。W
M エンジン パラメーター。S
S エンジン パラメーター。R
R エンジン パラメーター。
解説
このテンプレート クラスは、ユーザーによって指定された符号なし整数型の値を、循環関係 x(i) = (x(i - R) - x(i - S) - cy(i - 1)) mod M を使って生成する単体エンジンを表します。cy(i) は、x(i - S) - x(i - R) - cy(i - 1) < 0 の場合は値 1 を、それ以外の場合は値 0 を保持し、M は値 2W を保持します (ここでのテンプレート パラメーター W は、テンプレート パラメーター subtract_with_carry の M を置き換えることに注意してください)。エンジンの状態は、キャリー インジケーターに R 値を追加したものです。これらの値は、operator() が少なくとも R 回呼び出された場合、返された最後の R 値になります。それ以外の場合は、返された N 値と、シードの最後の R - N 値になります。
テンプレートの引数 UIntType には、最大 M - 1 の値を保持できるだけの大きさが必要です。テンプレートの引数 S および R の値は 0 より大きく、また、S は R より小さくする必要があります。
必要条件
ヘッダー : <random>
名前空間: std
参照
関連項目
subtract_with_carry_engine::discard
subtract_with_carry_engine::operator()