std::uniform_random_bit_generator
Определено в заголовке <random> | ||
|---|---|---|
template< class G >
concept uniform_random_bit_generator =
std::invocable<G&> && std::unsigned_integral<std::invoke_result_t<G&>> &&
requires {
{ G::min() } -> std::same_as<std::invoke_result_t<G&>>;
{ G::max() } -> std::same_as<std::invoke_result_t<G&>>;
requires std::bool_constant<(G::min() < G::max())>::value;
};
| (с C++20) |
Концепция uniform_random_bit_generator<G> определяет, что G — это тип генератора равномерно распределённых случайных битов, то есть объекты типа G — это объекты-функции, возвращающие целые беззнаковые значения, причём каждое значение в диапазоне возможных результатов имеет (в идеале) равную вероятность возврата.
Семантические требования
uniform_random_bit_generator<G> моделируется только в том случае, если для любого объекта g типа G:
-
g()находится в диапазоне[G::min(),G::max()], -
g()имеет амортизированную сложность O(1).
Примечания
Для удовлетворения требования std::bool_constant<(G::min() < G::max())>::value, как G::min(), так и G::max() должны быть константными выражениями, а результат сравнения должен быть true.
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/numeric/random/uniform_random_bit_generator