Namespaces
Variants

std:: subtract_with_carry_engine

From cppreference.net
헤더에 정의됨 <random>
template <

class UIntType,
std:: size_t w, std:: size_t s, std:: size_t r

> class subtract_with_carry_engine ;
(C++11부터)

subtract with carry 알고리즘을 사용하는 난수 생성 엔진입니다.

목차

템플릿 매개변수

UIntType - 생성기가 생성하는 결과 타입. 이 타입이 다음 중 하나가 아닌 경우의 효과는 정의되지 않음: unsigned short , unsigned int , unsigned long , 또는 unsigned long long .
w - 상태 시퀀스의 워드 크기(비트 단위)
s - 짧은 지연(short lag)
r - 긴 지연(long lag)

만약 w [ 1 , std:: numeric_limits < UIntType > :: digits ] 범위 내에 있지 않거나, s [ 1 , r ) 범위 내에 있지 않으면, 프로그램의 형식이 올바르지 않습니다.

생성기 속성

subtract_with_carry_engine 의 상태 크기는 O(r) 이며, 각 상태는 두 부분으로 구성됩니다:

  • 정수 값들의 시퀀스 X (길이 r ), 각 값의 범위는 [ 0 , 2 w
    )
    에 속함.
  • 정수 c ( carry 로 알려짐), 그 값은 0 또는 1 임.

X j j mod r 번째 값(0부터 시작)을 나타낸다고 할 때, subtract_with_carry_engine 전이 알고리즘 ( TA(x i ) )은 다음과 같이 정의됩니다:

  1. Y X i-s -X i-r -c 로 정의합니다.
  2. y Y mod 2 w
    로 설정하고, X i y 로 설정합니다.
  3. 만약 Y 가 음수이면 c 1 로 설정하고, 그렇지 않으면 c 0 으로 설정합니다.

subtract_with_carry_engine 생성 알고리즘 GA(x i ) = y 입니다. 여기서 y 는 전이 알고리즘의 2단계에서 생성된 값입니다.

미리 정의된 특수화

다음 특수화들은 일반적으로 사용되는 두 가지 매개변수 집합을 가진 난수 엔진을 정의합니다:

헤더 파일에 정의됨 <random>
유형 정의
ranlux24_base (C++11) std :: subtract_with_carry_engine < std:: uint_fast32_t , 24 , 10 , 24 >
ranlux48_base (C++11) std :: subtract_with_carry_engine < std:: uint_fast64_t , 48 , 5 , 12 >

중첩 타입

유형 정의
result_type UIntType

데이터 멤버

constexpr std::size_t word_size
[static]
w
(public static member constant)
constexpr std::size_t short_lag
[static]
s
(public static member constant)
constexpr std::size_t long_lag
[static]
r
(public static member constant)
constexpr std::uint_least32_t default_seed
[static]
19780503u
(public static member constant)

멤버 함수

생성 및 시드 설정
엔진을 생성함
(public member function)
엔진의 현재 상태를 설정함
(public member function)
생성
엔진의 상태를 진행시키고 생성된 값을 반환함
(public member function)
지정된 양만큼 엔진의 상태를 진행시킴
(public member function)
특성
[static]
출력 범위에서 가능한 가장 작은 값을 얻음
(public static member function)
[static]
출력 범위에서 가능한 가장 큰 값을 얻음
(public static member function)

비멤버 함수

(C++11) (C++11) (removed in C++20)
두 의사 난수 엔진의 내부 상태를 비교함
(함수)
의사 난수 엔진에 대한 스트림 입출력을 수행함
(함수 템플릿)

예제

결함 보고서

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

DR 적용 대상 게시된 동작 올바른 동작
LWG 3809 C++11 default_seed
result_type 로 표현 불가능할 수 있음
해당 타입을
std::uint_least32_t 로 변경