Namespaces
Variants

C++ named requirements: UniformRandomBitGenerator (since C++11)

From cppreference.net
C++ named requirements

균일 난수 비트 생성기는 가능한 결과 범위 내의 각 값이 (이상적으로) 동일한 확률을 가지도록 부호 없는 정수 값을 반환하는 함수 객체입니다.

균일 난수 비트 생성기는 난수 생성기로 사용하기 위한 것이 아닙니다: 이들은 (효율성을 위해 대량으로 생성되는) 난수 비트의 소스로 사용됩니다. 모든 균일 난수 비트 생성기는 어떤 난수 분포 에도 연결되어 난수(형식적으로는 난수 변량)를 얻을 수 있습니다.

목차

요구사항

타입 G 가 다음 조건을 만족하면 UniformRandomBitGenerator 를 만족합니다

주어진 g , 타입 G 의 값에 대해, 다음 모든 조건이 충족됩니다:

  • G::result_type 이 유효하며, 부호 없는 정수 타입을 나타냅니다.
  • 다음 표현식들이 유효해야 하며 지정된 효과를 가져야 합니다:
(C++20까지)
표현식 타입 요구사항
G :: min ( ) G::result_type
  • G operator ( ) 가 반환할 수 있는 가장 작은 값을 산출합니다.
  • 결과 값은 G :: max ( ) 보다 엄격하게 작습니다.
  • 표현식은 반드시 상수 표현식이어야 합니다.
G :: max ( ) G::result_type
  • G operator ( ) 가 반환할 수 있는 가장 큰 값을 산출합니다.
  • 결과 값은 G::min() 보다 엄격하게 큽니다.
  • 표현식은 반드시 상수 표현식이어야 합니다.
g ( ) G::result_type
  • 닫힌 구간 [ G :: min ( ) , G :: max ( ) ] 내의 값을 반환합니다.
  • 분할 상환 상수 복잡도를 가집니다.

다음의 모든 조건이 만족됩니다:

(C++20부터)

참고 사항

모든 RandomNumberEngine s 는 이 요구사항을 충족합니다.

표준 라이브러리

다음 표준 라이브러리 기능들은 UniformRandomBitGenerator 타입을 기대합니다.

(until C++17) (C++11)
범위 내 요소들을 무작위로 재정렬함
(함수 템플릿)
(C++17)
시퀀스에서 N개의 무작위 요소를 선택함
(함수 템플릿)
주어진 정밀도의 실수 값을 [ 0 , 1 ) 구간에 균일하게 분포시킴
(함수 템플릿)
범위 전체에 균일하게 분포된 정수 값을 생성함
(클래스 템플릿)
범위 전체에 균일하게 분포된 실수 값을 생성함
(클래스 템플릿)
기타 모든 난수 분포

다음 표준 라이브러리 기능들은 UniformRandomBitGenerator 를 만족하지만 추가적으로 RandomNumberEngine 를 만족하지는 않습니다:

하드웨어 엔트로피 소스를 사용하는 비결정적 난수 생성기
(클래스)

결함 보고서

다음의 동작 변경 결함 보고서들은 이전에 발표된 C++ 표준에 소급 적용되었습니다.

DR 적용 대상 게시된 동작 올바른 동작
LWG 2154
( P0898R3 )
C++11 G :: min ( ) G :: max ( )
가 상수 표현식이어야 하는지 명확하지 않았음 [1]
필수
  1. 이러한 표현식들의 시간 복잡도 요구사항은 C++20 이전에는 "컴파일 타임"이었습니다. 이 표현은 모호한데, "컴파일 타임 시간 복잡도"는 "컴파일 타임에 평가될 수 있다"와 "시간 복잡도가 컴파일 타임에 결정될 수 있다" 두 가지로 해석될 수 있기 때문입니다.

참고 항목

타입이 균일 난수 비트 생성자로 적합함을 명시함
(concept)