void seed(result_type value = default_seed); // (1)
void seed(result_type value = 0u); // (1) C++26
template<class Sseq>
void seed(Sseq& q); // (2)
概要
- (1) : シード値を受け取って再初期化する
- (2) : シードのシーケンスを受け取って再初期化する
効果
パラメータvalue
およびq
をarg
とした場合、
*this = subtract_with_carry_engine(arg);
と同じ効果を持つ。
戻り値
なし
例
#include <iostream>
#include <random>
#include <array>
int main()
{
// (1) デフォルトのシード値から再初期化
{
std::ranlux24_base engine;
engine.seed();
std::uint32_t result = engine();
std::cout << result << std::endl;
}
// (1) シード値を指定して再初期化
{
std::ranlux24_base engine;
std::uint32_t seed = std::random_device()();
engine.seed(seed);
std::uint32_t result = engine();
std::cout << result << std::endl;
}
// (2) シードのシーケンスを指定して再初期化
{
std::ranlux24_base 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;
}
}
出力例
15039276
13643873
1408763
バージョン
言語
- C++11
処理系
- Clang: ??
- GCC: 4.7.2 ✅
- ICC: ??
- Visual C++: 2010 ✅, 2012 ✅, 2013 ✅, 2015 ✅, 2017 ✅