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
부호가 없는 정수 결과 형식입니다. 가능한 형식은 <random>을 참조하세요.W
단어 크기입니다. 상태 시퀀스의 각 단어 크기입니다(비트). 사전 조건: 0 < W ≤ numeric_limits<UIntType>::digitsS
짧은 지연입니다. 정수 값의 개수입니다. 사전 조건: 0 < S < RR
긴 지연입니다. 되풀이가 연속으로 발생했는지 확인합니다.
멤버
subtract_with_carry_engine::subtract_with_carry_engine |
subtract_with_carry_engine::min |
subtract_with_carry_engine::discard |
subtract_with_carry_engine::operator() |
subtract_with_carry_engine::max |
subtract_with_carry_engine::seed |
default_seed는 19780503u로 정의된 멤버 상수로, subtract_with_carry_engine::seed 및 단일 값 생성자의 기본 매개 변수 값으로 사용됩니다. |
엔진 멤버에 대한 자세한 내용은 <random>을 참조하세요.
설명
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입니다. x(i - S) - x(i - R) - cy(i - 1) < 0인 경우 이 값이 1입니다. 그렇지 않으면 0입니다. M의 값은 2W입니다. 엔진의 상태는 전달 표시기 + R 값입니다. 이러한 값은 마지막 R 값으로 구성됩니다. operator()가 R번 호출된 경우 그렇습니다. 그렇지 않으면 반환된 N 값과 시드의 마지막 R - N 값으로 구성됩니다.
템플릿 인수 UIntType은 최대 M - 1까지 값을 보유할 수 있도록 충분히 커야 합니다.
엔진에서 직접 생성기를 생성할 수 있더라도 다음 테이블의 미리 정의된 typedef 중 하나를 사용할 수 있습니다.
이름 |
설명 |
---|---|
ranlux24_base |
ranlux24에 대한 기준으로 사용됩니다.
|
ranlux48_base |
ranlux48에 대한 기준으로 사용됩니다.
|
subtract-with-carry 엔진 알고리즘에 대한 자세한 내용은 Wikipedia 문서 지연된 피보나치 생성기를 참조하세요.
요구 사항
헤더: <random>
네임스페이스: std