- random[meta header]
- std[meta namespace]
- class template[meta id-type]
- cpp11[meta cpp]
namespace std {
class seed_seq;
}
seed_seq
クラスは、擬似乱数を生成するためのシード列を表現するためのクラスである。
シード列は、32ビット整数のvector
として表現される。
擬似乱数は一つの値をシードとして使用することもできるが、より多くの乱雑さ(エントロピー)が必要な場合に、複数のシードで擬似乱数を初期化するためにこのクラスを使用する。
名前 |
説明 |
対応バージョン |
(constructor) |
コンストラクタ |
C++11 |
~seed_seq() = default; |
デストラクタ |
C++11 |
void operator=(const seed_seq&) = delete; |
代入演算子。代入不可 |
C++11 |
名前 |
説明 |
対応バージョン |
size |
シード列の要素数を取得する |
C++11 |
param |
シード列を取得する |
C++11 |
以下は、メルセンヌ・ツイスター法による擬似乱数生成器を、状態シーケンスのサイズ分のシード列で初期化する例である。
#include <iostream>
#include <array>
#include <algorithm>
#include <functional>
#include <random>
int main()
{
// 擬似乱数生成器の状態シーケンスのサイズ分、
// シードを用意する
std::array<
std::seed_seq::result_type,
std::mt19937::state_size
> seed_data;
// 非決定的な乱数でシード列を構築する
std::random_device seed_gen;
std::generate(seed_data.begin(), seed_data.end(), std::ref(seed_gen));
std::seed_seq seq(seed_data.begin(), seed_data.end());
// 擬似乱数生成器をシード列で初期化
std::mt19937 engine(seq);
// 乱数生成
for (int i = 0; i < 10; ++i) {
std::uint32_t result = engine();
std::cout << result << std::endl;
}
}
- std::seed_seq[color ff0000]
- std::mt19937[link mt19937.md]
- std::random_device[link random_device.md]
- std::generate[link /reference/algorithm/generate.md]
- seed_data.begin()[link /reference/array/array/begin.md]
- seed_data.end()[link /reference/array/array/end.md]
- std::ref[link /reference/functional/ref.md]
- std::uint32_t[link /reference/cstdint/uint32_t.md]
- engine()[link mersenne_twister_engine/op_call.md]
2454004218
3605965574
154830518
2773897806
2068951439
2231513109
607824
726899798
1108321733
2723491878