std:: linear_congruential_engine
|
定義済みヘッダー
<random>
|
||
|
template
<
class
UIntType,
|
(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
,
|
ネストされた型
| 型 | 定義 |
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)
|
二つの擬似乱数生成エンジンの内部状態を比較する
(関数) |
|
(C++11)
|
擬似乱数生成エンジンに対するストリーム入出力を実行する
(関数テンプレート) |
例
|
このセクションは不完全です
理由: 例がありません |