random_device, classe
Génère une séquence aléatoire à partir d'un appareil externe.
Syntaxe
class random_device {
public:
typedef unsigned int result_type;
// constructor
explicit random_device(const std::string& token = "");
// properties
static result_type min();
static result_type max();
double entropy() const;
// generate
result_type operator()();
// no-copy functions
random_device(const random_device&) = delete;
void operator=(const random_device&) = delete;
};
Membres
random_device
entropie
random_device::operator()
Notes
La classe décrit une source de nombres aléatoires et a l'autorisation, sans y être obligée, d'être non déterministe ou sécurisée par chiffrement par la norme ISO C++. Dans l’implémentation Visual Studio, les valeurs produites sont non déterministes et sécurisées par chiffrement, mais elles sont exécutées plus lentement que les générateurs créés à partir de moteurs et d’adaptateurs de moteurs (tels que mersenne_twister_engine, le moteur rapide et très performant utilisé pour la plupart des applications).
Les résultats random_device
sont distribués de manière uniforme dans la plage fermée [ 0, 2
32).
Il n'est pas garanti que random_device
aboutisse à un appel non bloquant.
Généralement, random_device
est utilisé pour amorcer d'autres générateurs créés avec des moteurs ou adaptateurs de moteurs. Pour plus d’informations, consultez <aléatoire>.
Exemple
Le code suivant illustre les fonctionnalités de base de cette classe et des exemples de résultats. En raison de la nature non déterministe de random_device
, les valeurs aléatoires affichées dans la section Sortie ne correspondent pas à vos résultats. Cela est normal et prévu.
// random_device_engine.cpp
// cl.exe /W4 /nologo /EHsc /MTd
#include <random>
#include <iostream>
using namespace std;
int main()
{
random_device gen;
cout << "entropy == " << gen.entropy() << endl;
cout << "min == " << gen.min() << endl;
cout << "max == " << gen.max() << endl;
cout << "a random value == " << gen() << endl;
cout << "a random value == " << gen() << endl;
cout << "a random value == " << gen() << endl;
}
entropy == 32
min == 0
max == 4294967295
a random value == 2378414971
a random value == 3633694716
a random value == 213725214
Cet exemple est simpliste et ne représente pas le cas d'utilisation générale de ce générateur. Pour obtenir un exemple de code plus représentatif, consultez <aléatoire>.
Spécifications
Header :<random>
Espace de noms : std
random_device::random_device
Construit le générateur.
random_device(const std::string& = "");
Notes
Le constructeur initialise le générateur si nécessaire, en ignorant le paramètre de chaîne. Lève une valeur d’un type défini par l’implémentation dérivé d’exception si random_device
n’a pas pu être initialisé.
random_device::entropy
Estime le caractère aléatoire de la source.
double entropy() const noexcept;
Notes
La fonction membre retourne une estimation du caractère aléatoire de la source, exprimée en bits.
random_device::operator()
Retourne une valeur aléatoire.
result_type operator()();
Notes
Retourne des valeurs distribuées uniformément dans l’intervalle fermé [min, max
] comme déterminé par les fonctions membres min()
et max()
. Lève une valeur d’un type défini par l’implémentation dérivé d’exception si un nombre aléatoire n’a pas pu être obtenu.