Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Generuje náhodnou sekvenci lineárním kongruenčním algoritmem.
Syntaxe
class linear_congruential_engine{
public: // types
typedef UIntType result_type;
// engine characteristics
static constexpr result_type multiplier = a;
static constexpr result_type increment = c;
static constexpr result_type modulus = m;
static constexpr result_type min() { return c == 0u 1u: 0u; }
static constexpr result_type max() { return m - 1u; }
static constexpr result_type default_seed = 1u;
// constructors and seeding functions
explicit linear_congruential_engine(result_type s = default_seed);
template <class Sseq>
explicit linear_congruential_engine(Sseq& q);
void seed(result_type s = default_seed);
template <class Sseq>
void seed(Sseq& q);
// generating functions
result_type operator()();
void discard(unsigned long long z);
};
Parametry
UIntType
Typ výsledku bez znaménka. Možné typy najdete v náhodném> zobrazení<.
A
Násobitel. Předběžná podmínka: Viz oddíl Poznámky.
C
Přírůstky. Předběžná podmínka: Viz oddíl Poznámky.
M
Moduly. Předběžná podmínka: Viz poznámky.
Členové
linear_congruential_engine::linear_congruential_engine
linear_congruential_engine::discard
linear_congruential_engine::max
linear_congruential_engine::min
linear_congruential_engine::operator()
linear_congruential_engine::seed
default_seed je členová konstanta definovaná jako 1uvýchozí hodnota parametru a linear_congruential_engine::seed konstruktor s jednou hodnotou.
Další informace o členech motoru najdete v náhodném> zobrazení<.
Poznámky
Šablona linear_congruential_engine třídy je nejjednodušší generátorový modul, ale ne nejrychlejší nebo nejvyšší kvalita. Vylepšením tohoto modulu je substract_with_carry_engine. Ani jeden z těchto motorů není tak rychlý nebo s stejně kvalitními výsledky jako mersenne_twister_engine.
Tento modul vytváří hodnoty celočíselného typu zadaného uživatelem pomocí relačního vztahu opakování (období). x(i) = (A * x(i-1) + C) mod M
Pokud je M nula, hodnota použitá pro tuto operaci modulu je numeric_limits<result_type>::max() + 1. Stav motoru je poslední vrácená hodnota nebo počáteční hodnota, pokud nebyla provedena operator()žádná volání .
Pokud M není nula, hodnoty argumentů šablony A a C musí být menší než M.
I když můžete vytvořit generátor z tohoto modulu přímo, můžete také použít jeden z těchto předdefinovaných typedef.
minstd_rand0: 1988 minimální standardní motor (Lewis, Goodman a Miller, 1969).
typedef linear_congruential_engine<unsigned int, 16807, 0, 2147483647> minstd_rand0;
minstd_rand: Aktualizace minimálního standardního motoru minstd_rand0 (Park, Miller a Stockmeyer, 1993).
typedef linear_congruential_engine<unsigned int, 48271, 0, 2147483647> minstd_rand;
Podrobné informace o algoritmu lineárního kongruenciálního motoru naleznete v článku Wikipedie Lineární kongruenciální generátor.
Požadavky
Header:<random>
Obor názvů: std