Sdílet prostřednictvím


mersenne_twister_engine – třída

Generuje náhodné posloupnosti vysoce kvalitní založené na algoritmu twister Mersenne celá čísla.

template<class UIntType, 
    size_t W, size_t N, size_t M, size_t R,
    UIntType A, size_t U, UIntType D, size_t S,
    UIntType B, size_t T, UIntType C, size_t L, UIntType F>
class mersenne_twister_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: 2u < W ≤ numeric_limits<UIntType>::digits

  • N
    Uvedena velikost.Počet prvků (hodnot) v sekvenci stavu.

  • M
    Posunou velikost.Počet prvků, které mají při každé Zkroutit přeskočit.Předpokladem: 0 < M ≤ N

  • R
    Maskování bitů.Předpokladem: R ≤ W

  • A
    XOR maska.Předpokladem: A ≤ (1u<<W) - 1u

  • U, S, T, L
    Parametry shift Tempering.Použít jako hodnoty posunu při kódování (popouštění).Podmínka: U,S,T,L ≤ W

  • D, B, C
    Tempering bit parametry masky.Použít jako hodnoty typu bit maska při kódování (popouštění).Podmínka: D,B,C ≤ (1u<<W) - 1u

  • F
    Inicializace násobitel.Použít pro pomoc s inicializace pořadí.Podmínka: F ≤ (1u<<W) - 1u

Členy

mersenne_twister_engine::mersenne_twister_engine

mersenne_twister_engine::min

mersenne_twister_engine::discard

mersenne_twister_engine::operator()

mersenne_twister_engine::max

mersenne_twister_engine::seed

default_seed je členem konstantní, definován jako 5489u, použít jako výchozí hodnotu parametru pro mersenne_twister_engine::seed a konstruktoru jednou hodnotou.

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

Poznámky

Tato třída šablony popisuje náhodné číslo modul vrací hodnoty v intervalu uzavřeno [0, 2W - 1].Obsahuje velkou celočíselnou hodnotu s W * (N - 1) + R bity.Extrahuje W bitů současně z této velké hodnoty a pokud použije všechny bity, přetvoří velkou hodnotu posunem a mícháním bitů tak, aby byly k dispozici nové sady bitů pro extrakci.Stav stroje je poslední NWbitová hodnota, pokud operator() byla volána alespoň N-krát, jinak MWbitové hodnoty, které byly použity a posledních N - M hodnot seedu.

Generátor twists vysokou hodnotu, která obsahuje pomocí registru shift kroucená obecný zpětnou vazbu určené hodnoty posunu N a M, Zkroutit hodnotu R, a podmíněné XOR maska A.Kromě toho jsou bity registru nezpracovanou shift kódována (souvisí) podle matice bit kódování určené hodnoty U, D, S, B, T, C, a L.

Argument šablony UIntType musí být dostatečně velká pro uložení hodnoty až 2W - 1.Hodnoty šablony argumentů musí splňovat následující požadavky: 2u < W, 0 < M, M ≤ N, R ≤ W, U ≤ W, S ≤ W, T ≤ W, L ≤ W, W ≤ numeric_limits<UIntType>::digits, A ≤ (1u<<W) - 1u, B ≤ (1u<<W) - 1u, C ≤ (1u<<W) - 1u, D ≤ (1u<<W) - 1u, and F ≤ (1u<<W) - 1u.

I když generátor z tento modul lze vytvořit přímo, doporučujeme jej, že použijte jednu z předdefinované funkce TypeDef v následující tabulce.

Name

Popis

mt19937

32bitový Mersenne twister modul (Matsumoto a Nishimura, 1998).

typedef mersenne_twister_engine<unsigned int, 32, 624, 397, 
    31, 0x9908b0df, 
    11, 0xffffffff, 
    7, 0x9d2c5680, 
    15, 0xefc60000, 
    18, 1812433253> mt19937;

mt19937_64

64 bit Mersenne twister modul (Matsumoto a Nishimura 2000).

typedef mersenne_twister_engine<unsigned long long, 64, 312, 156, 
    31, 0xb5026f5aa96619e9ULL, 
    29, 0x5555555555555555ULL, 
    17, 0x71d67fffeda60000ULL, 
    37, 0xfff7eee000000000ULL, 
    43, 6364136223846793005ULL> mt19937_64;

Podrobné informace o twister algoritmus Mersenne naleznete v článku Wikipedia Mersenne twister.

Příklad

Příklad kódu, naleznete v části <random>.

Požadavky

Záhlaví: < náhodné >

Obor názvů: směrodatné

Viz také

Referenční dokumentace

<random>