Udostępnij za pośrednictwem


mersenne_twister_engine — Klasa

Generuje losowe sekwencje liczb całkowitych w ramach projektu Mersenne algorytm — trąba powietrzna w oparciu o wysokiej jakości.

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 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: 2u < W ≤ numeric_limits<UIntType>::digits

  • N
    Stan rozmiar.Liczba elementów (wartości) w kolejności stanu.

  • M
    Zmiany rozmiaru.Liczba elementów, aby pominąć podczas każdego dołączony.Warunek wstępny: 0 < M ≤ N

  • R
    Maski bitów.Warunek wstępny: R ≤ W

  • A
    Maska XOR.Warunek wstępny: A ≤ (1u<<W) - 1u

  • U, S, T, L
    Tempering shift parametrów.Używane jako wartości shift podczas szyfrowanie (jej).Warunek wstępny" U,S,T,L ≤ W

  • D, B, C
    Tempering bit parametrów maski.Używane jako wartości maski bitowej podczas szyfrowanie (jej).Warunek wstępny" D,B,C ≤ (1u<<W) - 1u

  • F
    Mnożnik inicjowania.Służy do inicjowania sekwencji pomocy.Warunek wstępny" F ≤ (1u<<W) - 1u

Elementy członkowskie

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

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

Uwagi

Ta klasa szablonu opisuje losowo numer aparatu, zwracające wartości z interwałem zamknięte [0, 2W - 1].Przechowuje dużą wartość całkowitą z liczbą bitów W * (N - 1) + R.Wyodrębnia W bitów jednorazowo z tej dużej wartości, a kiedy zużyje wszystkie bity, skręca dużą wartość przez przesunięcie i zmieszanie bitów, tak aby mieć nowy zestaw bitów, skąd można wyodrębnić.Stan aparatu to ostatnie wartości NW-bit używane, jeśli operator() została wywołana co najmniej N razy, w przeciwnym razie wartości MW-bit, które zostały wykorzystane oraz ostatnie wartości N - M inicjatora.

Generator twists dużą wartość, która przy użyciu zdefiniowanych przez shift wartości rejestru shift skręconych opinii ogólnych N i M, wartość dołączony R, i warunkowych maska XOR A.Ponadto bitów rejestru shift pierwotne są zaszyfrowane (ograniczony) zgodnie z zaszyfrowanie bitowe macierzy zdefiniowanej przez wartości U, D, S, B, T, C, i L.

Argument szablonu UIntType musi być wystarczający do przechowywania wartości 2W - 1.Wartości argumentów szablonu musi spełniać następujące wymagania: 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.

Mimo to można skonstruować bezpośrednio generator z tego aparatu zalecane jest wykonywanych w jednej z wstępnie zdefiniowanych definicje typów w poniższej tabeli.

Nazwa

Opis

mt19937

32-bitowy ramach projektu Mersenne — trąba powietrzna aparat (Matsumoto i 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-bitowe ramach projektu Mersenne — trąba powietrzna aparat (Matsumoto i Nishimura, 2000).

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

Aby uzyskać szczegółowe informacje dotyczące algorytm — trąba powietrzna w ramach projektu Mersenne, zobacz artykuł Wikipedia — trąba powietrzna w ramach projektu Mersenne.

Przykład

Na przykład kod, zobacz <random>.

Wymagania

Nagłówka: < losowe >

Przestrzeni nazw: Standard

Zobacz też

Informacje

<random>