Namespaces
Variants

std::linear_congruential_engine<UIntType,a,c,m>:: linear_congruential_engine

From cppreference.net
linear_congruential_engine ( ) : linear_congruential_engine ( default_seed ) { }
(1) (начиная с C++11)
explicit linear_congruential_engine ( result_type value ) ;
(2) (начиная с C++11)
template < class SeedSeq >
explicit linear_congruential_engine ( SeedSeq & seq ) ;
(3) (начиная с C++11)
linear_congruential_engine ( const linear_congruential_engine & other ) ;
(4) (начиная с C++11)
(неявно объявлен)

Создает генератор псевдослучайных чисел.

1) Конструктор по умолчанию.
  • Если механизм, созданный конструктором по умолчанию, имеет тип std::minstd_rand0 , то 10000-е последовательное его использование производит значение 1043618065 .
  • Если механизм, созданный конструктором по умолчанию, имеет тип std::minstd_rand , то 10000-е последовательное его использование производит значение 399268537 .
2) Создает генератор с начальным значением value . Начальное состояние генератора определяется следующим образом:
  • Если c % m == 0 и value % m == 0 оба true , состояние равно 1 .
  • В противном случае состояние равно value % m .
3) Конструирует генератор с последовательностью затравки seq . При заданном std:: size_t ( std:: log2 ( m ) / 32 ) + 1 как k , начальное состояние генератора определяется следующим образом:
  1. Создаёт вымышленный массив a длиной k + 3 .
  2. Вызывает seq. generate ( a + 0 , a + k + 3 ) .
  3. Пусть S равно (∑ k-1
    j=0
    a j+3 ·2 32j
    ) mod m
    .
  4. Если оба условия c % m == 0 и S == 0 являются true , устанавливает состояние генератора в 1 . В противном случае устанавливает состояние генератора в S .
Эта перегрузка участвует в разрешении перегрузки только если SeedSeq удовлетворяет требованиям SeedSequence .
4) Конструктор копирования. При создании * this == other выполняется условие true .

Содержание

Параметры

value - начальное значение для инициализации внутреннего состояния
seq - последовательность начальных значений для инициализации внутреннего состояния

Сложность

1,2) Константа.
3) Такая же, как сложность вызова seq.generate .
4) Константа.

Исключения

3) Если SeedSeq не является std::seed_seq , выбрасывает исключения, выброшенные вызовом seq.generate .

Отчеты о дефектах

Следующие отчеты об изменениях поведения, влияющие на дефекты, были применены задним числом к ранее опубликованным стандартам C++.

DR Applied to Behavior as published Correct behavior
LWG 2181 C++11 overload ( 3 ) would not throw even if the seq.generate call throws propagates the exception
P0935R0 C++11 the default constructor was explicit made implicit

Смотрите также

устанавливает текущее состояние движка
(public member function)