Класс linear_congruential_engine
Создает случайную последовательность, используя линейный конгруэнтный алгоритм.
template<class UIntType, UIntType A, UIntType C, UIntType M> class linear_congruential_engine;
Параметры
UIntType
Беззнаковый целочисленный тип результата. Возможные типы см. в разделе <random>.A
Множитель. Предусловие: см. заметки.C
Инкремент. Предусловие: см. заметки.M
Модуль. Предусловие: см. заметки.
Члены
linear_congruential_engine::linear_congruential_engine |
linear_congruential_engine::min |
linear_congruential_engine::discard |
linear_congruential_engine::operator() |
linear_congruential_engine::max |
linear_congruential_engine::seed |
default_seed — это член-константа, определенный как 1u и используемый как значение по умолчанию для параметра linear_congruential_engine::seed и конструктор с одним значением. |
Дополнительные сведения о членах механизма см. в разделе <random>.
Заметки
Класс шаблона linear_congruential_engine — это самый простой механизм генератора, но не самый быстрый или качественный. Улучшением этого механизма является substract_with_carry_engine. Ни один из этих механизмов не обеспечивает такую же скорость и качество результатов, как механизм mersenne_twister_engine.
Этот механизм формирует значения указанного пользователем беззнакового целого типа, используя рекуррентное соотношение (период) x(i) = (A * x(i-1) + C) mod M.
Если значение M равно 0, для операции модуля используется значение numeric_limits<result_type>::max() + 1. Последним возвращается состояние механизма или начальное значение, если функция operator() не вызывалась.
Если значение M не равно 0, значения аргументов шаблона A и C должны быть меньше M.
Хотя можно создать генератор на основе этого механизма напрямую, также можно использовать один из предварительно заданных определений типов, показанных в следующей таблице.
Имя |
Описание |
---|---|
minstd_rand0 |
Минимальный стандартный механизм 1988 (Льюис, Гудмэн и Миллер, 1969).
|
minstd_rand |
Обновленный минимальный стандартный механизм minstd_rand0 (Парк, Миллер и Стокмайер, 1993).
|
Дополнительные сведения о линейном конгруэнтном алгоритме см. в статье Линейный конгруэнтный генератор на веб-сайте Википедии.
Требования
Заголовок: <random>
Пространство имен: std