C++ named requirements: UniformRandomBitGenerator (since C++11)
Равномерный генератор случайных битов — это функциональный объект, возвращающий беззнаковые целочисленные значения, причём каждое значение в диапазоне возможных результатов имеет (в идеале) равную вероятность.
Универсальные генераторы случайных битов не предназначены для использования в качестве генераторов случайных чисел: они используются как источник случайных битов (генерируемых оптом, для эффективности). Любой универсальный генератор случайных битов может быть подключен к любому распределению случайных чисел для получения случайного числа (формально, случайной величины).
Содержание |
Требования
Тип
G
удовлетворяет требованиям
UniformRandomBitGenerator
если
|
Дано
g
— значение типа
|
(до C++20) |
| Выражение | Тип | Требования |
|---|---|---|
| G :: min ( ) |
G::result_type
|
|
| G :: max ( ) |
G::result_type
|
|
| g ( ) |
G::result_type
|
|
|
Все следующие условия удовлетворены:
|
(since C++20) |
Примечания
Все RandomNumberEngine s удовлетворяют этому требованию.
Стандартная библиотека
Следующие средства стандартной библиотеки ожидают тип UniformRandomBitGenerator .
|
(until C++17)
(C++11)
|
случайно переупорядочивает элементы в диапазоне
(шаблон функции) |
|
(C++17)
|
выбирает N случайных элементов из последовательности
(шаблон функции) |
|
(C++11)
|
равномерно распределяет вещественные значения заданной точности в диапазоне
[
0
,
1
)
(шаблон функции) |
|
(C++11)
|
генерирует целочисленные значения, равномерно распределенные в диапазоне
(шаблон класса) |
|
(C++11)
|
генерирует вещественные значения, равномерно распределенные в диапазоне
(шаблон класса) |
| все остальные распределения случайных чисел | |
Следующие средства стандартной библиотеки удовлетворяют требованиям UniformRandomBitGenerator без дополнительного удовлетворения требований RandomNumberEngine :
|
(C++11)
|
недетерминированный генератор случайных чисел, использующий аппаратный источник энтропии
(класс) |
Отчеты о дефектах
Следующие отчеты об изменениях поведения, влияющие на дефекты, были применены ретроактивно к ранее опубликованным стандартам C++.
| DR | Applied to | Behavior as published | Correct behavior |
|---|---|---|---|
|
LWG 2154
( P0898R3 ) |
C++11 |
было неясно, требуются ли
G
::
min
(
)
и
G
::
max
(
)
быть константными выражениями [1] |
требуется |
- ↑ Требование временной сложности для этих выражений было "время компиляции" до C++20. Формулировка неоднозначна, так как "временная сложность времени компиляции" может быть интерпретирована как "может быть вычислена во время компиляции" и "временная сложность может быть определена во время компиляции".
Смотрите также
|
(C++20)
|
определяет, что тип соответствует требованиям генератора равномерно распределенных случайных битов
(концепт) |