Condividi tramite


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

random_device::random_device

random_device::entropy

random_device::operator()

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

Vedere anche

Riferimenti

<random>