subtract_with_carry_engine — Klasa
Generuje losową sekwencję przez algorytm odejmowania z przenoszeniem (z opóźnieniem Fibonacciego).
Składnia
template <class UIntType, size_t W, size_t S, size_t R>
class subtract_with_carry_engine;
Parametry
UIntType
Typ wyniku niepodpisanej liczby całkowitej. Aby uzyskać informacje o możliwych typach, zobacz losowe>.<
W
Rozmiar programu Word. Rozmiar każdego wyrazu w bitach sekwencji stanu. Warunek wstępny: 0 < W ≤ numeric_limits<UIntType>::digits
S
Krótkie opóźnienie. Liczba wartości całkowitych. Warunek wstępny: 0 < S < R
R
Długie opóźnienie. Określa cykl w wygenerowanej serii.
Elementy członkowskie
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
jest stałą składową zdefiniowaną jako 19780503u
, używaną jako domyślna wartość parametru dla subtract_with_carry_engine::seed
i konstruktora pojedynczej wartości.
Aby uzyskać więcej informacji na temat składowych aparatu, zobacz losowe>.<
Uwagi
Szablon substract_with_carry_engine
klasy jest ulepszeniem linear_congruential_engine. Ani dla tych silników nie jest tak szybki, jak i z tak wysokiej jakości wyników, jak mersenne_twister_engine.
Ten aparat generuje wartości typu całkowitoliczbowego określonego przez użytkownika przy użyciu relacji cyklu (okres), x(i) = (x(i - R) - x(i - S) - cy(i - 1)) mod M
gdzie cy(i)
ma wartość , jeśli x(i - S) - x(i - R) - cy(i - 1) < 0
, w przeciwnym razie 0
, i M
ma wartość 2
1
W. Stan silnika jest wskaźnikiem przenoszenia i wartościami języka R. Te wartości składają się z ostatnich zwracanych wartości języka R , jeśli operator()
są wywoływane co najmniej razy R , w przeciwnym razie N
zwracane wartości i ostatnie R - N
wartości nasion.
Argument UIntType
szablonu musi być wystarczająco duży, aby przechowywać wartości do M - 1
.
Chociaż generator z tego aparatu można skonstruować bezpośrednio, można również użyć jednej z tych wstępnie zdefiniowanych definicji typów:
ranlux24_base
: używany jako podstawa dla elementu ranlux24
.
typedef subtract_with_carry_engine<unsigned int, 24, 10, 24> ranlux24_base;
ranlux48_base
: używany jako podstawa dla elementu ranlux48
.
typedef subtract_with_carry_engine<unsigned long long, 48, 5, 12> ranlux48_base;
Aby uzyskać szczegółowe informacje na temat odejmowania z algorytmem aparatu przenoszenia, zobacz artykuł w Wikipedii Lagged Fibonacci generator.
Wymagania
Nagłówek:<losowy>
Przestrzeń nazw: std