Namespaces
Variants

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

From cppreference.net
C++ named requirements

Un générateur de bits aléatoire uniforme 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.

Les générateurs uniformes de bits aléatoires ne sont pas destinés à être utilisés comme générateurs de nombres aléatoires : ils sont utilisés comme source de bits aléatoires (générés en bloc, pour l'efficacité). Tout générateur uniforme de bits aléatoires peut être connecté à toute distribution de nombres aléatoires afin d'obtenir un nombre aléatoire (formellement, une variable aléatoire).

Table des matières

Exigences

Le type G satisfait UniformRandomBitGenerator si

Étant donné g , une valeur de type G , toutes les conditions suivantes doivent être satisfaites :

  • G::result_type est valide et désigne un type entier non signé.
  • Les expressions suivantes doivent être valides et avoir leurs effets spécifiés :
(jusqu'à C++20)
Expression Type Exigences
G :: min ( ) G::result_type
  • Donne la plus petite valeur que l' operator ( ) de G peut retourner.
  • La valeur résultante est strictement inférieure à G :: max ( ) .
  • L'expression doit être une expression constante.
G :: max ( ) G::result_type
  • Donne la plus grande valeur que l' operator ( ) de G peut retourner.
  • La valeur résultante est strictement supérieure à G::min() .
  • L'expression doit être une expression constante.
g ( ) G::result_type
  • Retourne une valeur dans l'intervalle fermé [ G :: min ( ) , G :: max ( ) ] .
  • A une complexité amortie constante.

Toutes les conditions suivantes sont satisfaites :

(depuis C++20)

Notes

Tous les RandomNumberEngine s satisfont à cette exigence.

Bibliothèque standard

Les fonctionnalités suivantes de la bibliothèque standard attendent un type UniformRandomBitGenerator .

(until C++17) (C++11)
réorganise aléatoirement les éléments dans une plage
(modèle de fonction)
(C++17)
sélectionne N éléments aléatoires d'une séquence
(modèle de fonction)
distribue uniformément des valeurs réelles de précision donnée sur [ 0 , 1 )
(modèle de fonction)
produit des valeurs entières uniformément distribuées sur une plage
(modèle de classe)
produit des valeurs réelles uniformément distribuées sur une plage
(modèle de classe)
toutes les autres distributions de nombres aléatoires

Les fonctionnalités suivantes de la bibliothèque standard satisfont UniformRandomBitGenerator sans satisfaire en plus RandomNumberEngine :

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

Rapports de défauts

Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.

DR Appliqué à Comportement publié Comportement corrigé
LWG 2154
( P0898R3 )
C++11 il n'était pas clair si G :: min ( ) et G :: max ( )
doivent être des expressions constantes [1]
requis
  1. L'exigence de complexité temporelle pour ces expressions était « à la compilation » avant C++20. La formulation est ambiguë, car « complexité temporelle à la compilation » peut être interprétée à la fois comme « peut être évaluée à la compilation » et « la complexité temporelle peut être déterminée à la compilation ».

Voir aussi

spécifie qu'un type est qualifié comme générateur uniforme de bits aléatoires
(concept)