Spec-Zone.ru › C++

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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API