名前空間
変種
操作

std::mersenne_twister_engine::mersenne_twister_engine

提供: cppreference.com
 
 
 
擬似乱数生成
一様ランダムビットジェネレータ
エンジンとエンジンアダプタ
非決定的なジェネレータ
分布
一様分布
ベルヌーイ分布
ポアソン分布
正規分布
標本分布
シードシーケンス
(C++11)
C のライブラリ
 
 
explicit mersenne_twister_engine( result_type value = default_seed );
(1) (C++11以上)
(C++20未満)
mersenne_twister_engine() : mersenne_twister_engine(default_seed) {}
explicit mersenne_twister_engine( result_type value );
(1) (C++20以上)
template< class Sseq >
explicit mersenne_twister_engine( Sseq& s );
(2) (C++11以上)
mersenne_twister_engine( const mersenne_twister_engine& );
(3) (C++11以上)
(暗黙に宣言)

擬似乱数エンジンを構築します。

1) エンジンを構築し、以下のように状態 (n 個の result_type 型の値 X
i
) を初期化します。 X
0
を初期化するために value mod 2w
が使用され、残りは反復的に初期化されます。 i=1-n,...,-1 について X
i
がそれぞれ [f·(X
i-1
xor(X
i-1
rshift(w-2)))+i mod n] mod 2w
に初期化されます。
2) エンジンを構築し、以下のように状態を初期化します。 s.generate(a, a+n*k) (ただし a は長さ n*k の配列、 k は ceil(w/32)) を呼び、 それから i=-n,...,-1 についてエンジンの状態の各要素 X
i
k-1
j=0
a
k(i+n)+j}·232j
) mod 2w
に設定し、最後に X
0
の最上位の w-r 個のビットがゼロであり、他のすべての X
i
がゼロであれば、 X
0
2w-1
で置き換えます。

ノート: 初期化はメルセンヌ・ツイスタの 2002 年のバージョン mt19937ar.c に基づくことが要求されます。

オーバーロード (2) は、 SseqSeedSequence を満たす場合にのみ、オーバーロード解決に参加します。 特に、 Sseqresult_type に変換可能であれば、候補関数の集合から除外されます。

[編集] 引数

value - 初期状態の初期化で使用するためのシード値
s - 初期状態の初期化で使用するためのシードシーケンス

[編集] 計算量

n (状態のサイズ) に比例。

[編集] 関連項目

エンジンの現在の状態を設定します
(パブリックメンバ関数) [edit]