random_uniform_random_bit_generator

random_uniform_random_bit_generator (균일 난수 비트 생성기 개념)

std::uniform_random_bit_generator은 타입이 균일 난수 비트 생성기인지 지정하는 개념(concept)이에요. C++20부터 사용할 수 있어요.

출처: cppreference

본문

<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;
    };

(since C++20)

개념 uniform_random_bit_generator<G>는 G가 균일 난수 비트 생성기의 타입임을 지정해요. 즉 타입 G의 객체는 가능한 결과 범위의 각 값이 (이상적으로) 같은 확률로 반환되도록 부호 없는 정수 값을 반환하는 함수 객체예요.

의미 요구사항 (Semantic requirements)

uniform_random_bit_generator<G>는 타입 G의 임의의 객체 g가 주어졌을 때 다음을 만족할 때만 모델링돼요:

  • g()가 범위 [G::min(), G::max()]에 있어요,
  • g()는 분할 상환 상수 복잡도(amortized constant complexity)를 가져요.

참고 (Notes)

std::bool_constant<(G::min() < G::max())>::value 요구사항을 만족하려면 G::min()과 G::max()가 모두 상수 표현식이어야 하고, 비교 결과가 true여야 해요.

더 알아보기 (Learn more)

cppreference