Spec-Zone.ru › C++

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

Spec-Zone.ru

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