std::linear_congruential_engine
Определено в заголовке <random> | ||
|---|---|---|
template<
class UIntType,
UIntType a,
UIntType c,
UIntType m
> class linear_congruential_engine;
| (с C++11) |
linear_congruential_engine — генератор псевдослучайных чисел, основанный на линейном конгруэнтном генераторе (LCG). LCG имеет состояние, состоящее из одного целого числа.
Алгоритм перехода функции LCG: \(\small{x_{i+1}\leftarrow(a x_i + c)\mod m}\)xi+1 ← (axi+c) mod m.
Следующие определения типов определяют генератор псевдослучайных чисел с двумя обычно используемыми наборами параметров:
Определено в заголовке <random> |
|
|---|---|
| Тип | Определение |
minstd_rand0 (C++11) | std::linear_congruential_engine<std::uint_fast32_t, 16807, 0, 2147483647>Разработан в 1969 году Льюисом, Гудманом и Миллером, принят как "Минимальный стандарт" в 1988 году Парком и Миллером |
minstd_rand (C++11) | std::linear_congruential_engine<std::uint_fast32_t, 48271, 0, 2147483647>Новый "Минимальный стандарт", рекомендованный Парком, Миллером и Стоксмайером в 1993 году |
Шаблонные параметры
| UIntType | - | Тип результата, генерируемый генератором. Эффект неопределён, если это не один из unsigned short, unsigned int, unsigned long, или unsigned long long. |
| a | - | множитель |
| c | - | слагаемое |
| m | - | модуль |
Типы членов
| Тип члена | Определение |
|---|---|
result_type (C++11) | Целочисленный тип, генерируемый движком. Результаты не определены, если это не целое беззнаковое целое число. |
Члены-функции
Конструктор и инициализация |
|
|
(C++11) | создаёт генератор (публичный член-функция) |
|
(C++11) | устанавливает текущее состояние генератора (публичный член-функция) |
Генерация |
|
|
(C++11) | перемещает состояние генератора и возвращает сгенерированное значение (публичный член-функция) |
|
(C++11) | перемещает состояние генератора на заданное количество шагов (публичный член-функция) |
Характеристики |
|
|
[статический] (C++11) | получает наименьшее возможное значение в диапазоне вывода (публичная статическая член-функция) |
|
[статический] (C++11) | получает наибольшее возможное значение в диапазоне вывода (публичная статическая член-функция) |
Функции без указания класса
|
(C++11)(C++11)(удалено в C++20) | сравнивает внутреннее состояние двух генераторов псевдослучайных чисел (функция) |
|
(C++11) | выполняет ввод и вывод в поток для генератора псевдослучайных чисел (шаблон функции) |
Постоянные члены
| constexpr UIntType multiplier
[статический] (C++11) | множитель (a). (публичная статическая константа члена) |
| constexpr UIntType increment
[статический] (C++11) | слагаемое (c). (публичная статическая константа члена) |
| constexpr UIntType modulus
[статический] (C++11) | модуль (m). (публичная статическая константа члена) |
| constexpr UIntType default_seed
[статический] (C++11) | значение по умолчанию для seed (1). (публичная статическая константа члена) |
Пример
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/numeric/random/linear_congruential_engine