Spec-Zone.ru › C++

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)
создаёт генератор
(публичный член-функция)
seed
(C++11)
устанавливает текущее состояние генератора
(публичный член-функция)
Генерация
operator()
(C++11)
перемещает состояние генератора и возвращает сгенерированное значение
(публичный член-функция)
discard
(C++11)
перемещает состояние генератора на заданное количество шагов
(публичный член-функция)
Характеристики
min
[статический] (C++11)
получает наименьшее возможное значение в диапазоне вывода
(публичная статическая член-функция)
max
[статический] (C++11)
получает наибольшее возможное значение в диапазоне вывода
(публичная статическая член-функция)

Функции без указания класса

operator==operator!=
(C++11)(C++11)(удалено в C++20)
сравнивает внутреннее состояние двух генераторов псевдослучайных чисел
(функция)
operator<<operator>>
(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

Spec-Zone.ru

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