std::mersenne_twister_engine<UIntType,w,n,m,r,a,u,d,s,b,t,c,l,f>::seed
void seed( result_type value = default_seed ); | (1) | (начиная с C++11) |
template< class SeedSeq > void seed( SeedSeq& seq ); | (2) | (начиная с C++11) |
Устанавливает состояние генератора случайных чисел.
1) Сразу после установки состояния
*this == std::mersenne_twister_engine(value) — true.
2) Сразу после установки состояния
*this == std::mersenne_twister_engine(seq) — true.Параметры
| value | - | значение начального числа для установки состояния |
| seq | - | последовательность начальных чисел для установки состояния |
Исключения
2) Если
SeedSeq не является std::seed_seq, выбрасываются исключения, выбрасываемые при вызове seq.generate.Сложность
1) Такая же, как у
std::mersenne_twister_engine(value).
2) Такая же, как у
std::mersenne_twister_engine(seq).Отчёты об ошибках
Следующие отчёты об ошибках, меняющие поведение, были ретроактивно применены к ранее опубликованным стандартам C++.
| DR | Применяется к | Опубликованное поведение | Корректное поведение |
|---|---|---|---|
| LWG 2181 | C++11 | перегрузка (2) не выбрасывала исключение, даже если вызов seq.generate выбрасывал исключение | исключение передаётся дальше |
См. также
| создаёт генератор (открытая функция-член) |
Пример
#include <iostream>
#include <random>
int main()
{
std::mt19937 gen;
// Seed the engine with an unsigned int
gen.seed(1);
std::cout << "after seed by 1: " << gen() << '\n';
// Seed the engine with two unsigned ints
std::seed_seq sseq{1, 2};
gen.seed(sseq);
std::cout << "after seed by {1,2}: " << gen() << '\n';
}
Возможный вывод:
after seed by 1: 1791095845
after seed by {1,2}: 3127717181
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/numeric/random/mersenne_twister_engine/seed