Namespaces
Variants

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

From ko.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 유형을 요구합니다.

(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)