Namespaces
Variants

C++ named requirements: RandomNumberEngine (since C++11)

From cppreference.net
C++ named requirements

Un moteur de nombres aléatoires est un objet fonction retournant des valeurs entières non signées telles que chaque valeur dans la plage des résultats possibles a (idéalement) une probabilité égale.

Tout moteur de génération de nombres aléatoires est également un UniformRandomBitGenerator , et peut donc être connecté à toute distribution de nombres aléatoires afin d'obtenir un nombre aléatoire (formellement, une variable aléatoire).

Exigences

Un type satisfait RandomNumberEngine s'il satisfait UniformRandomBitGenerator et, étant donnés les types et valeurs suivants, les exigences sémantiques et de complexité dans le tableau ci-dessous sont satisfaites :

Type Définition
E un type RandomNumberEngine
T E::result_type
Valeur Définition
e une valeur de type E
v une lvalue de type E
x , y des valeurs de type (éventuellement qualifié const) E
s une valeur de type T
q une lvalue SeedSequence
z une valeur de type unsigned long long
os une lvalue dont le type est une spécialisation de std::basic_ostream
is une lvalue dont le type est une spécialisation de std::basic_istream
n la taille de l'état de E
TA l' algorithme de transition de E
GA l' algorithme de génération de E
Expression Type de retour Sémantique Complexité
E ( ) N/A Crée un moteur avec le même état initial que tous les autres moteurs de type E construits par défaut. O(n)
E ( x ) Crée un moteur qui est égal à x . O(n)
E ( s ) Crée un moteur dont l'état initial est déterminé par s . O(n)
E ( q ) Crée un moteur dont l'état initial est déterminé par un seul appel à q.generate . identique à la complexité de q.generate appelé sur une séquence dont la longueur est n
e. seed ( ) void Postcondition : e == E ( ) . identique à E ( )
e. seed ( s ) void Postcondition : e == E ( s ) . identique à E ( s )
e. seed ( q ) void Postcondition : e == E ( q ) . identique à E ( q )
e ( ) T Avance l'état de e de e i à e i+1 (c'est-à-dire TA ( e i ) ) et retourne GA ( e i ) . amorti constant
e. discard ( z ) void Avance l'état de e de e i à e i+z par tout moyen équivalent à z appels consécutifs de e ( ) . pas pire que la complexité de z appels consécutifs de e ( )
x == y bool Pour tout entier positif i , si les i -ièmes appels consécutifs de x ( ) et y ( ) retournent la même valeur, retourne true . Sinon retourne false . O(n)
x ! = y bool ! ( x == y ) O(n)
os << x decltype ( os ) & Avec les fmtflags définis sur std:: ios_base :: dec | std:: ios_base :: left et le caractère de remplissage défini sur l'espace, écrit dans os la représentation textuelle de l'état actuel de x .

Postcondition : les fmtflags de os et le caractère de remplissage sont identiques à ceux d'avant.

O(n)
is >> v decltype ( is ) & Avec fmtflags défini sur std:: ios_base :: dec , lit depuis is la représentation textuelle de l'état actuel de v . Si une entrée incorrecte est rencontrée, garantit que l'état de v reste inchangé par l'opération et appelle is. setstate ( std:: ios_base :: failbit ) (ce qui peut lancer std::ios_base::failure ).

Précondition : is fournit une représentation textuelle qui a été précédemment écrite en utilisant un flux de sortie pr satisfaisant toutes les conditions suivantes :

  • is. getloc ( ) == pr. getloc ( ) est true .
  • std:: is_same < decltype ( is ) :: char_type ,
    decltype ( pr ) :: char_type > :: value
    est true .
  • std:: is_same < decltype ( is ) :: traits_type ,
    decltype ( pr ) :: traits_type > :: value
    est true .

Postcondition : is a les mêmes fmtflags qu'auparavant.

O(n)

Bibliothèque standard

Les fonctionnalités suivantes de la bibliothèque standard satisfont RandomNumberEngine :

implémente l'algorithme congruentiel linéaire
(modèle de classe)
implémente l'algorithme Mersenne twister
(modèle de classe)
implémente l'algorithme de soustraction avec retenue ( Fibonacci retardé )
(modèle de classe)
un générateur parallélisable basé sur un compteur
(modèle de classe)
ignore certaines sorties d'un moteur de nombres aléatoires
(modèle de classe)
regroupe la sortie d'un moteur de nombres aléatoires en blocs d'un nombre spécifié de bits
(modèle de classe)
délivre la sortie d'un moteur de nombres aléatoires dans un ordre différent
(modèle de classe)

Les fonctionnalités suivantes de la bibliothèque standard satisfont UniformRandomBitGenerator mais pas RandomNumberEngine :

générateur de nombres aléatoires non déterministe utilisant une source d'entropie matérielle
(classe)