Поделиться через


Класс 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).

typedef linear_congruential_engine<unsigned int, 16807, 0, 2147483647> minstd_rand0;

minstd_rand

Обновленный минимальный стандартный механизм minstd_rand0 (Парк, Миллер и Стокмайер, 1993).

typedef linear_congruential_engine<unsigned int, 48271, 0, 2147483647> minstd_rand;

Дополнительные сведения о линейном конгруэнтном алгоритме см. в статье Линейный конгруэнтный генератор на веб-сайте Википедии.

Требования

Заголовок: <random>

Пространство имен: std

См. также

Ссылки

<random>