subtract_with_carry_engine 클래스
subtract-with-carry(지연된 피보나치) 알고리즘을 사용하여 임의 시퀀스를 생성합니다.
구문
template <class UIntType, size_t W, size_t S, size_t R>
class subtract_with_carry_engine;
매개 변수
UIntType
부호가 없는 정수 결과 형식입니다. 가능한 형식은 임>의 형식을 참조하세요<.
W
단어 크기. 상태 시퀀스의 각 단어 크기입니다(비트). 사전 조건: 0 < W ≤ numeric_limits<UIntType>::digits
S
짧은 지연. 정수 값의 개수입니다. 사전 조건: 0 < S < R
R
긴 지연. 되풀이가 연속으로 발생했는지 확인합니다.
멤버
subtract_with_carry_engine::subtract_with_carry_engine
subtract_with_carry_engine::max
subtract_with_carry_engine::min
subtract_with_carry_engine::discard
subtract_with_carry_engine::operator()
subtract_with_carry_engine::seed
default_seed
는 19780503u
로 정의된 멤버 상수로, subtract_with_carry_engine::seed
및 단일 값 생성자의 기본 매개 변수 값으로 사용됩니다.
엔진 멤버에 대한 자세한 내용은 임>의를 참조<하세요.
설명
substract_with_carry_engine
클래스 템플릿은 linear_congruential_engine 비해 개선되었습니다. 이러한 엔진 둘 다 mersenne_twister_engine만큼 빠르거나 품질 결과가 뛰어나지 않습니다.
이 엔진은 되풀이 관계(마침표)x(i) = (x(i - R) - x(i - S) - cy(i - 1)) mod M
를 사용하여 사용자 지정 부호 없는 정수 계열 형식의 값을 생성합니다. 여기서 cy(i)
값 1
은 ifx(i - S) - x(i - R) - cy(i - 1) < 0
이고 그렇지 않으면 0
M
값2
이 W입니다. 엔진의 상태는 캐리 표시기 및 R 값입니다. 이러한 값은 R번 이상 호출된 경우 operator()
반환된 마지막 R 값으로 구성되며, 그렇지 않으면 N
반환된 값과 시드의 마지막 R - N
값으로 구성됩니다.
템플릿 인수 UIntType
은 최대 M - 1
까지 값을 보유할 수 있도록 충분히 커야 합니다.
엔진에서 직접 생성기를 생성할 수 있더라도 아래의 미리 정의된 typedef 중 하나를 사용할 수 있습니다.
ranlux24_base
: ranlux24
에 대한 기준으로 사용됩니다.
typedef subtract_with_carry_engine<unsigned int, 24, 10, 24> ranlux24_base;
ranlux48_base
: ranlux48
에 대한 기준으로 사용됩니다.
typedef subtract_with_carry_engine<unsigned long long, 48, 5, 12> ranlux48_base;
캐리 엔진 알고리즘을 사용하는 빼기에 대한 자세한 내용은 Wikipedia 문서 지연 피보나치 생성기를 참조하세요.
요구 사항
헤더:<random>
네임스페이스: std