Classe random_device
Genera una sequenza casuale da un dispositivo esterno.
Sintassi
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;
};
Membri
random_device
entropia
random_device::operator()
Osservazioni:
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, 2
32).
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 casuale>.<
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;
}
entropy == 32
min == 0
max == 4294967295
a random value == 2378414971
a random value == 3633694716
a random value == 213725214
Questo esempio è semplicistico e non rappresentativo dei casi d'utilizzo generali per questo generatore. Per un esempio di codice più rappresentativo, vedere casuale>.<
Requisiti
Intestazione:<casuale>
Spazio dei nomi: std
random_device::random_device
Costruisce il generatore.
random_device(const std::string& = "");
Osservazioni:
Il costruttore inizializza il generatore in base alle esigenze, ignorando il parametro di stringa. Se non è stato possibile inizializzare random_device
, genera un valore di un tipo definito dall'implementazione derivato dall'oggetto exception.
random_device::entropy
Stima la casualità dell'origine.
double entropy() const noexcept;
Osservazioni:
La funzione membro restituisce una stima della casualità dell'origine, misurata in bit.
random_device::operator()
Restituisce un valore casuale.
result_type operator()();
Osservazioni:
Restituisce valori distribuiti in modo uniforme nell'intervallo chiuso [ min, max
], in base a quanto determinato dalle funzioni membro min()
e max()
. Se non è stato possibile ottenere un numero casuale, genera un valore di un tipo definito dall'implementazione derivato dall'oggetto exception.