function
std::mersenne_twister_engine::コンストラクタ(C++11)
explicit mersenne_twister_engine(result_type value = default_seed); // (1)
mersenne_twister_engine() : mersenne_twister_engine(default_seed) {} // (1) C++20
explicit mersenne_twister_engine(result_type value); // (2) C++20
template<class Sseq>
explicit mersenne_twister_engine(Sseq& q); // (3)
mersenne_twister_engine(const mersenne_twister_engine& e) = default; // (4)
mersenne_twister_engine(mersenne_twister_engine&& e) = default; // (5)
概要
- (1) : デフォルトコンストラクタ。
- C++17まで : シード値が指定されない場合はデフォルトのシード値 (
mersenne_twister_engine::default_seed
) で構築される
- C++20 : デフォルトのシード値 (
mersenne_twister_engine::default_seed
) で(2)に委譲
- (2) : シード値を受け取って状態シーケンスを構築する。
- (3) : シードのシーケンスを受け取って状態シーケンスを構築する。
- (4) : コピーコンストラクタ。状態シーケンスをコピーする。
- (5) : ムーブコンストラクタ。
計算量
- (1)(2) : 状態のサイズ
n
(mersenne_twister_engine::state_size
) に対し O(n)
- (5) : 状態シーケンスの要素数はコンパイル時に決定されるため、多くの場合状態シーケンスはスタック上(配列)に作られる。そのため、ムーブが効果的に動作することは期待できない
例
出力例
3499211612
4275542254
2960779330
バージョン
言語
処理系
参照