- random[meta header]
- std[meta namespace]
- discard_block_engine[meta class]
- function[meta id-type]
- cpp11[meta cpp]
void seed(); // (1)
void seed(result_type s); // (2)
template<class Sseq> void seed(Sseq& q); // (3)
- (1) : 元となる乱数生成器のデフォルトのシード値で再初帰化する
- (2) : シード値を受け取って再初期化する
- (3) : シードのシーケンスを受け取って再初期化する
各オーバーロードが持つパラメータをarg
とした場合、
*this = discard_block_engine(arg);
- discard_block_engine[link op_constructor.md]
と同じ効果を持つ。
指定されたシード値もしくはシードのシーケンスで、エンジンの再初期化を行う。
なし
#include <iostream>
#include <random>
#include <array>
int main()
{
// (1) デフォルトのシード値から再初期化
{
std::ranlux24 engine;
engine.seed();
std::uint32_t result = engine();
std::cout << result << std::endl;
}
// (2) シード値を指定して再初期化
{
std::ranlux24 engine;
std::uint32_t seed = std::random_device()();
engine.seed(seed);
std::uint32_t result = engine();
std::cout << result << std::endl;
}
// (3) シードのシーケンスを指定して再初期化
{
std::ranlux24 engine;
// シードのシーケンスを作る
std::random_device seed_gen;
std::array<std::uint32_t, 100> seeds;
for (std::uint32_t& x : seeds) {
x = seed_gen();
}
std::seed_seq seq(seeds.begin(), seeds.end());
// シードのシーケンスを指定してエンジンを再初期化
engine.seed(seq);
std::uint32_t result = engine();
std::cout << result << std::endl;
}
}
- seed()[color ff0000]
- seed(seed)[color ff0000]
- seed(seq)[color ff0000]
- std::ranlux24[link /reference/random/ranlux24.md]
- std::seed_seq[link /reference/random/seed_seq.md]
- seeds.begin()[link /reference/array/array/begin.md]
- seeds.end()[link /reference/array/array/end.md]
- std::uint32_t[link /reference/cstdint/uint32_t.md]
15039276
9516009
2488183
- C++11
- Clang: ??
- GCC:
- GCC, C++11 mode: 4.7.2
- ICC: ??
- Visual C++: ??