mersenne_twister_engine, classe
Génère une séquence aléatoire d'entiers de haute qualité selon l'algorithme twister de Mersenne.
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;
Paramètres
UIntType
Type des résultats entiers non signés. Pour plus d'informations sur les types possibles, voir <random>.W
Taille de mot. Taille de chaque mot, en bits, de la séquence d'état. Condition préalable : 2u < W ≤ numeric_limits<UIntType>::digitsN
Taille de l'état. Nombre d'éléments (valeurs) dans la séquence d'état.M
Taille de décalage. Nombre d'éléments à ignorer pendant chaque torsion. Condition préalable : 0 < M ≤ NR
Bits du masque. Condition préalable : R ≤ WA
Masque XOR. Condition préalable : A ≤ (1u<<W) - 1uU, S, T, L
Paramètres de décalage d'altération. Utilisés comme valeurs de décalage pendant le brouillage (altération). Condition préalable :U,S,T,L ≤ WD, B, C
Paramètres de masque de bits d'altération. Utilisés comme valeurs de masque de bits pendant le brouillage (altération). Condition préalable :D,B,C ≤ (1u<<W) - 1uF
Multiplicateur d'initialisation. Aide à l'initialisation de la séquence. Condition préalable :F ≤ (1u<<W) - 1u
Membres
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 est une constante membre, définie comme 5489u, utilisée comme valeur de paramètre par défaut pour mersenne_twister_engine::seed et le constructeur de valeur unique. |
Pour plus d'informations sur les membres moteurs, voir <random>.
Notes
Cette classe de modèle décrit un moteur de nombres aléatoires, avec retour de valeurs sur l'intervalle fermé [0, 2W - 1]. Il contient une valeur intégrale élevée avec W * (N - 1) + R bits. Il extrait W bits à la fois de cette valeur élevée et, quand il a utilisé tous les bits, il déforme la valeur élevée en décalant et en combinant les bits pour avoir un nouvel ensemble de bits dans lequel procéder à l'extraction. L'état du moteur est représenté par les dernières valeurs de N W bits utilisées si operator() a été appelé au moins N fois, sinon les valeurs de M W bits utilisées et les dernières valeurs N - M de la valeur initiale.
Le générateur déforme la valeur élevée qu'il contient en utilisant un registre à décalage de commentaires généralisés déformés défini par les valeurs de décalage N et M, une valeur de torsion R et un masque XOR conditionnel A. En outre, les bits du registre à décalage brut sont brouillés (altérés) selon une matrice de brouillage des bits définie par les valeurs U, D, S, B, T, C et L.
L'argument de modèle UIntType doit être assez volumineux pour contenir des valeurs jusqu'à 2W - 1. Les valeurs des autres arguments de modèle doivent être conformes aux spécifications suivantes : 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.
Bien que vous puissiez construire un générateur directement à partir de ce moteur, il est conseillé d'utiliser l'un des typedefs prédéfinis répertoriés dans le tableau suivant.
Nom |
Description |
---|---|
mt19937 |
Moteur twister Mersenne 32 bits (Matsumoto et Nishimura, 1998).
|
mt19937_64 |
Moteur twister Mersenne 64 bits (Matsumoto et Nishimura, 2000).
|
Pour plus d'informations sur l'algorithme twister de Mersenne, voir l'article de Wikipedia Mersenne twister.
Exemple
Pour obtenir un exemple de code, consultez <random>.
Configuration requise
En-tête : <random>
Espace de noms : std