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여야 해요.