std:: linear_congruential_engine
|
Определено в заголовке
<random>
|
||
|
template
<
class
UIntType,
|
(начиная с C++11) | |
linear_congruential_engine
— это генератор случайных чисел, основанный на
линейном конгруэнтном методе
(LCG).
Содержание |
Параметры шаблона
| UIntType | - | Тип результата, генерируемый генератором. Поведение не определено, если это не один из unsigned short , unsigned int , unsigned long , или unsigned long long . |
| a | - | множитель |
| c | - | инкремент |
| m | - | модуль |
Когда m не равно нулю, если a >= m или c >= m равно true , программа является некорректной.
Свойства генератора
Размер
состояния
для
linear_congruential_engine
составляет
1
, каждое состояние состоит из одного целого числа.
Фактический модуль m 0 определяется следующим образом:
- Если m не равно нулю, m 0 равно m .
-
Если
m
равно нулю,
m
0
равно значению
std::
numeric_limits
<
result_type
>
::
max
(
)
плюс
1
(что означает, что
m
0
может не быть представимым как
result_type).
Алгоритм перехода
генератора
linear_congruential_engine
задаётся формулой
TA(x
i
) = (a·x
i
+c) mod m
0
.
Алгоритм
генерации
для
linear_congruential_engine
имеет вид
GA(x
i
) = (a·x
i
+c) mod m
0
.
Псевдослучайное число, сгенерированное с текущим состоянием, также является последующим состоянием.
Предопределенные специализации
Следующие специализации определяют генератор случайных чисел с двумя часто используемыми наборами параметров:
|
Определено в заголовке
<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
,
|
Вложенные типы
| Тип | Определение |
result_type
|
UIntType
|
Члены данных
|
constexpr UIntType
multiplier
[static]
|
a
(публичная статическая константа-член) |
|
constexpr UIntType
increment
[static]
|
c
(публичная статическая константа-член) |
|
constexpr UIntType
modulus
[static]
|
m
(публичная статическая константа-член) |
|
constexpr UIntType
default_seed
[static]
|
1u
(публичная статическая константа-член) |
Функции-члены
Конструкция и инициализация |
|
|
конструирует движок
(public member function) |
|
|
устанавливает текущее состояние движка
(public member function) |
|
Генерация |
|
|
продвигает состояние движка и возвращает сгенерированное значение
(public member function) |
|
|
продвигает состояние движка на указанное количество шагов
(public member function) |
|
Характеристики |
|
|
[static]
|
получает наименьшее возможное значение в выходном диапазоне
(public static member function) |
|
[static]
|
получает наибольшее возможное значение в выходном диапазоне
(public static member function) |
Функции, не являющиеся членами класса
|
(C++11)
(C++11)
(removed in C++20)
|
сравнивает внутренние состояния двух генераторов псевдослучайных чисел
(функция) |
|
(C++11)
|
выполняет потоковый ввод и вывод для генератора псевдослучайных чисел
(шаблон функции) |
Пример
|
Этот раздел не завершён
Причина: отсутствует пример |