Udostępnij za pośrednictwem


subtract_with_carry_engine — Klasa

Generuje losowe sekwencje przez algorytm Odejmij z przenoszące (połączenie z otuliną Fibonacci).

template<class UIntType, size_t W, size_t S, size_t R>
class subtract_with_carry_engine;

Parametry

  • UIntType
    Typ wyniku liczby całkowitej bez znaku.Dla typów możliwych, zobacz <random>.

  • W
    Programu word rozmiar.Rozmiar każdego wyrazu w bitach, stan sekwencji.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ługo zwłoki.Określa cyklu w serii wygenerowany.

Elementy członkowskie

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 jest elementem członkowskim stałej, zdefiniowany jako 19780503u, jest używana jako domyślna wartość parametru subtract_with_carry_engine::seed i konstruktora pojedynczej wartości.

Więcej informacji na temat aparatu elementów członkowskich w temacie <random>.

Uwagi

substract_with_carry_engine Klasy szablonu jest ulepszoną linear_congruential_engine.Ma oba te aparatów wypada nie szybko z jako wynik wysokiej jakości jako mersenne_twister_engine.

Ten aparat tworzy wartości określone przez użytkownika bez znaku integralną typu przy użyciu relacji cyklu (okresu) x(i) = (x(i - R) - x(i - S) - cy(i - 1)) mod M, gdzie cy(i) ma wartość 1 Jeśli x(i - S) - x(i - R) - cy(i - 1) < 0, w przeciwnym razie 0, i M ma wartość 2W.Stan przez aparat jest przenoszące wskaźnik plus R wartości.Te wartości składają się z ostatnich R wartości zwracane if operator() została wywołana co najmniej R czasu, w przeciwnym razie N wartości, które zostały zwrócone i ostatnich R - N wartości inicjatora.

Argument szablonu UIntType musi być wystarczający do przechowywania wartości M - 1.

Mimo to można skonstruować bezpośrednio generator z tego aparatu umożliwia także jeden z wstępnie zdefiniowanych definicje typów w poniższej tabeli.

Nazwa

Opis

ranlux24_base

Używany jako bazowy dla ranlux24.

typedef subtract_with_carry_engine<unsigned int, 24, 10, 24> ranlux24_base;

ranlux48_base

Używany jako bazowy dla ranlux48.

typedef subtract_with_carry_engine<unsigned long long, 48, 5, 12> ranlux48_base;

Aby uzyskać szczegółowe informacje dotyczące subract przy użyciu algorytmu aparat przenoszące, zobacz artykuł Wikipedia generator połączenie z otuliną Fibonacci.

Wymagania

Nagłówka: < losowe >

Przestrzeni nazw: Standard

Zobacz też

Informacje

<random>