Sdílet prostřednictvím


subtract_with_carry_engine – třída

Generuje náhodné pořadí algoritmem odečíst s zvučnější (Fibonacciho tepelně izolováno).

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

Parametry

  • UIntType
    Typ výsledku celého čísla bez znaménka.Možné typy, naleznete v části <random>.

  • W
    Word velikost.Velikost každého slova v bitech, stav pořadí.Předpokladem: 0 < W ≤ numeric_limits<UIntType>::digits

  • S
    Krátké prodleva.Počet celočíselné hodnoty.Předpokladem: 0 < S < R

  • R
    Dlouhé prodlevy.Určuje opakování v řadě vygenerován.

Členy

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 je členem konstantní, definován jako 19780503u, použít jako výchozí hodnotu parametru pro subtract_with_carry_engine::seed a konstruktoru jednou hodnotou.

Další informace o členech stroj, naleznete v části <random>.

Poznámky

substract_with_carry_engine Třída šablony je zlepšení oproti linear_congruential_engine.Ani pro tyto moduly je tak rychle, nebo s jako vysoce kvalitní výsledky, jako mersenne_twister_engine.

Tento modul vytváří hodnoty zadané uživatelem bez znaménka nedílnou typu pomocí vztahu třídy opakování (období) x(i) = (x(i - R) - x(i - S) - cy(i - 1)) mod M, kde cy(i) má hodnotu 1 Pokud x(i - S) - x(i - R) - cy(i - 1) < 0, v opačném případě 0, a M má hodnotu 2W.Stav stroje je zachování indikátor plus R hodnoty.Tyto hodnoty se skládají ze poslední R hodnoty vrácené if operator() byla volána alespoň R krát, v opačném případě N hodnoty, které byly vráceny a poslední R - N hodnoty počáteční hodnotu.

Argument šablony UIntType musí být dostatečně velká pro uložení hodnoty až M - 1.

Přestože generátor z tento modul lze vytvořit přímo, můžete také použít jeden z předdefinovaných funkce TypeDef v následující tabulce.

Name

Popis

ranlux24_base

Použít jako základ pro ranlux24.

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

ranlux48_base

Použít jako základ pro ranlux48.

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

Podrobné informace o subract s algoritmem modulu provést, naleznete v článku Wikipedia Generátor tepelně izolováno Fibonacciho.

Požadavky

Záhlaví: < náhodné >

Obor názvů: směrodatné

Viz také

Referenční dokumentace

<random>