Namespaces
Variants

std:: linear_congruential_engine

From cppreference.net
定義済みヘッダー <random>
template <

class UIntType,
UIntType a,
UIntType c,
UIntType m

> class linear_congruential_engine ;
(C++11以降)

linear_congruential_engine は、 Linear congruential generator (LCG) に基づく乱数生成エンジンです。

目次

テンプレートパラメータ

UIntType - ジェネレータによって生成される結果の型。これが unsigned short unsigned int unsigned long または unsigned long long のいずれでもない場合、動作は未定義です。
a - 乗数項
c - 加数項
m - 法数項

m がゼロでない場合、 a >= m または c >= m true の場合、プログラムは不適格です。

ジェネレータプロパティ

linear_congruential_engine の状態の サイズ 1 であり、各状態は単一の整数で構成されます。

実際のモジュラス m 0 は以下のように定義されます:

  • m がゼロでない場合、 m 0 m となる。
  • m がゼロの場合、 m 0 std:: numeric_limits < result_type > :: max ( ) の値に 1 を加えた値となる(つまり m 0 result_type として表現可能である必要はない)。

linear_congruential_engine 遷移アルゴリズム TA(x i ) = (a·x i +c) mod m 0 です。

linear_congruential_engine 生成アルゴリズム GA(x i ) = (a·x i +c) mod m 0 です。

現在の状態で生成される疑似乱数は、後続状態でもあります。

事前定義された特殊化

以下の特殊化は、よく使用される2つのパラメータセットを持つ乱数生成エンジンを定義します:

ヘッダーで定義 <random>
定義
minstd_rand0 (C++11) std :: linear_congruential_engine < std:: uint_fast32_t ,
16807 , 0 , 2147483647 >

1969年にLewis、Goodman、Millerによって発見され、1988年にParkとMillerによって「最小標準」として採用されました

minstd_rand (C++11)

std :: linear_congruential_engine < std:: uint_fast32_t ,
48271 , 0 , 2147483647 >
新しい「最小標準」、1993年にPark、Miller、Stockmeyerによって推奨

ネストされた型

定義
result_type UIntType

データメンバ

constexpr UIntType multiplier
[static]
a
(公開静的メンバ定数)
constexpr UIntType increment
[static]
c
(公開静的メンバ定数)
constexpr UIntType modulus
[static]
m
(公開静的メンバ定数)
constexpr UIntType default_seed
[static]
1u
(公開静的メンバ定数)

メンバー関数

構築とシード設定
エンジンを構築する
(公開メンバ関数)
エンジンの現在の状態を設定する
(公開メンバ関数)
生成
エンジンの状態を進め、生成された値を返す
(公開メンバ関数)
指定された量だけエンジンの状態を進める
(公開メンバ関数)
特性
[static]
出力範囲で可能な最小値を取得する
(公開静的メンバ関数)
[static]
出力範囲で可能な最大値を取得する
(公開静的メンバ関数)

非メンバー関数

(C++11) (C++11) (removed in C++20)
二つの擬似乱数生成エンジンの内部状態を比較する
(関数)
擬似乱数生成エンジンに対するストリーム入出力を実行する
(関数テンプレート)