random_device, classe
Génère une séquence aléatoire à partir d'un appareil externe.
class random_device { public: typedef unsigned int result_type; // cosntructor 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
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 de qualité élevée de choix pour la plupart des applications).
Les résultats random_device sont distribués de manière uniforme dans la plage fermée [0, 232).
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, voir <random>.
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;
}
Sortie :
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, voir <random>.
Configuration requise
En-tête : <random>
Espace de noms : std