Spec-Zone.ru › C++

C++ требуемые свойства: UniformRandomBitGenerator (с C++11)

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

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

Требования

Тип G удовлетворяет UniformRandomBitGenerator, если

Учитывая g, значение типа G, все следующие условия выполняются:

  • G::result_type является допустимым и обозначает тип целого беззнакового числа.
  • Следующие выражения должны быть допустимыми и иметь указанные эффекты:
(до C++20)
Выражение Тип Требования
G::min() G::result_type
  • Возвращает наименьшее значение, которое может вернуть оператор() G.
  • Значение возврата строго меньше G::max().
  • Функция должна быть constexpr.
G::max() G::result_type
  • Возвращает наибольшее значение, которое может вернуть оператор() G.
  • Значение возврата строго больше G::min().
  • Функция должна быть constexpr.
g() G::result_type
  • Возвращает значение в замкнутом интервале [G::min(), G::max()].
  • Имеет амортизированную сложность константного времени.

Все следующие условия выполняются:

  • G моделирует uniform_random_bit_generator.
  • std::invoke_result_t<G&> является типом целого беззнакового числа.
  • G предоставляет вложенный typedef имя result_type, которое обозначает тот же тип, что и std::invoke_result_t<G&>.
(с C++20)

Примечания

Все RandomNumberEngines удовлетворяют этому требованию.

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

Следующие средства стандартной библиотеки ожидают тип UniformRandomBitGenerator.

random_shuffleshuffle
(до C++17)(C++11)
случайным образом переупорядочивает элементы в диапазоне
(шаблон функции)
sample
(C++17)
выбирает N случайных элементов из последовательности
(шаблон функции)
generate_canonical
(C++11)
равномерно распределяет вещественные значения заданной точности по [​0​, 1)
(шаблон функции)
uniform_int_distribution
(C++11)
генерирует целые значения, равномерно распределенные в диапазоне
(шаблон класса)
uniform_real_distribution
(C++11)
генерирует вещественные значения, равномерно распределенные в диапазоне
(шаблон класса)
все остальные распределения случайных чисел

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

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

См. также

uniform_random_bit_generator
(C++20)
указывает, что тип соответствует генератору равномерных случайных битов
(концепция)

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

Spec-Zone.ru

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