Partager via


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, 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, 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.

Voir aussi

<random>