Classe random_device
Genera una sequenza casuale da un dispositivo esterno.
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; };
Membri
Note
La classe descrive un'origine di numeri casuali e può, ma non deve, essere non deterministica o crittograficamente sicura in base allo standard C++ ISO. Nell'implementazione di Visual Studio i valori prodotti sono non deterministici e crittograficamente sicuri, ma l'esecuzione risulta più lenta rispetto ai generatori creati da motori e adattatori del motore, ad esempio mersenne_twister_engine, il motore veloce e di qualità elevata scelto per la maggior parte delle applicazioni.
I risultati di random_device sono distribuiti in modo uniforme nell'intervallo chiuso [0, 232).
Non è garantito che random_device abbia come risultato una chiamata non di blocco.
In genere, random_device è usato per il seeding di altri generatori creati con motori o adattatori del motore. Per altre informazioni, vedere <random>.
Esempio
Il codice seguente illustra la funzionalità di base di questa classe e presenta esempi di risultati. A causa della natura non deterministica di random_device, i valori casuali mostrati nella sezione Output non corrisponderanno ai risultati specifici dell'utente. Questo comportamento è normale e previsto.
// 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;
}
Output:
Questo esempio è semplicistico e non rappresentativo dei casi d'utilizzo generali per questo generatore. Per un esempio di codice più rappresentativo, vedere <random>.
Requisiti
Intestazione: <random>
Spazio dei nomi: std