Spec-Zone.ru › C++

Требования к именованным типам C++: RandomNumberEngine (с C++11)

Движок случайных чисел — это объект-функция, возвращающий значения целых беззнаковых чисел, при этом каждое значение в диапазоне возможных результатов имеет (в идеале) равную вероятность.

Любой движок случайных чисел также является UniformRandomBitGenerator и, следовательно, может быть подключен к любому распределению случайных чисел для получения случайного числа (формально — случайной величины).

Требования

Тип E, удовлетворяющий UniformRandomBitGenerator, также будет удовлетворять RandomNumberEngine, если, учитывая

  • T, тип, указанный E::result_type
  • s, значение типа T
  • e, значение типа E
  • v, lvalue типа E
  • x и y, возможно константные значения типа E
  • q, lvalue некоторого типа, удовлетворяющего SeedSequence
  • z, значение типа unsigned long long
  • os, поток вывода
  • is, поток ввода

следующие выражения допустимы и имеют указанные эффекты:

Выражение Тип возвращаемого значения Требования
E() Создает движок с тем же состоянием, что и все другие движки типа E, созданные по умолчанию.
E(x) Создает движок с тем же состоянием, что и x.
E(s) Создаёт движок, начальное состояние которого определяется целым числом s.
E(q) Создает движок, начальное состояние которого определяется одним вызовом q.generate.
e.seed() void Устанавливает e == E().
e.seed(s) void Устанавливает e == E(s).
e.seed(q) void Устанавливает e == E(q).
e() T Возвращает значение в замкнутом интервале [E::min(), E::max()]. Имеет амортизированную постоянную сложность.
e.discard(z) void Перемещает состояние e так, как будто было выполнено z последовательных вызовов e().
x == y bool true если x и y находятся в одном состоянии (таким образом, повторные последующие вызовы x() и y() будут генерировать одинаковые последовательности). В противном случае, false.
x != y bool !(x == y)
os << x decltype(os)& Записывает в os текстовое представление текущего состояния x. В выводе соседние числа разделены одним или несколькими пробелами. Если os не установлен флаг форматирования ios_base::dec|ios_base::left, поведение может быть неопределенным.
is >> v decltype(is)& Считывает из is текстовое представление текущего состояния v таким образом, что если это состояние ранее было записано через os << x, то x == v. Если is не установлен флаг форматирования ios_base::dec, поведение может быть неопределенным.

Стандартная библиотека

Следующие средства стандартной библиотеки удовлетворяют RandomNumberEngine:

linear_congruential_engine
(C++11)
реализует линейный конгруэнтный алгоритм
(шаблон класса)
mersenne_twister_engine
(C++11)
реализует алгоритм Мерсенна-Твистера
(шаблон класса)
subtract_with_carry_engine
(C++11)
реализует алгоритм вычитания с переносом (задержанный Фибоначчи)
(шаблон класса)
discard_block_engine
(C++11)
отбрасывает некоторые результаты работы движка случайных чисел
(шаблон класса)
independent_bits_engine
(C++11)
упаковывает выход движка случайных чисел в блоки заданного количества бит
(шаблон класса)
shuffle_order_engine
(C++11)
предоставляет выход движка случайных чисел в другом порядке
(шаблон класса)

Следующие средства стандартной библиотеки удовлетворяют UniformRandomBitGenerator, но не RandomNumberEngine:

random_device
(C++11)
недетерминированный генератор случайных чисел, использующий источник аппаратной энтропии
(класс)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/named_req/RandomNumberEngine

Spec-Zone.ru

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