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()имеет амортизированную константную сложность.
Примечания
Чтобы удовлетворить требованию 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/cpp/numeric/random/uniform_random_bit_generator