Condividi tramite


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

Vedi anche

<random>