Namespaces
Variants

std:: uniform_random_bit_generator

From ru.cppreference.net
Определено в заголовке <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 .