std:: subtract_with_carry_engine
|
헤더에 정의됨
<random>
|
||
|
template
<
class
UIntType,
|
(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 ,2w
)에 속함. - 정수 c ( carry 로 알려짐), 그 값은 0 또는 1 임.
X
j
가
j mod r
번째 값(0부터 시작)을 나타낸다고 할 때,
subtract_with_carry_engine
의
전이 알고리즘
(
TA(x
i
)
)은 다음과 같이 정의됩니다:
- Y 를 X i-s -X i-r -c 로 정의합니다.
-
y
를
Y mod 2
w
로 설정하고, X i 을 y 로 설정합니다. - 만약 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++11)
|
의사 난수 엔진에 대한 스트림 입출력을 수행함
(함수 템플릿) |
예제
|
이 섹션은 불완전합니다
이유: 예제 없음 |
결함 보고서
다음의 동작 변경 결함 보고서들은 이전에 발표된 C++ 표준에 소급 적용되었습니다.
| DR | 적용 대상 | 게시된 동작 | 올바른 동작 |
|---|---|---|---|
| LWG 3809 | C++11 |
default_seed
가
result_type
로 표현 불가능할 수 있음
|
해당 타입을
std::uint_least32_t 로 변경 |