random_device (Clase)

Genera una secuencia aleatoria desde un dispositivo externo.

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; };

Miembros

random_device::random_device

random_device::entropy

random_device::operator()

Comentarios

La clase describe un origen de números aleatorios y puede ser (aunque no es obligatorio) no determinista o segura criptográficamente según la norma ISO C++. En la implementación de Visual Studio, los valores generados son no deterministas y seguros criptográficamente, pero se ejecutan con mayor lentitud que los generadores creados a partir de motores y adaptadores de motor (como el motor Mersenne Twister, que constituye la opción de motor más rápida y de mejor calidad la mayoría de las veces).

Los resultados de random_device se distribuyen uniformemente en el intervalo cerrado [0, 232].

No está garantizado que random_device resulte en una llamada de no bloqueo.

random_device se suele usar para propagar otros generadores creados con motores o adaptadores de motor. Para obtener más información, vea <random>.

Ejemplo

En el siguiente código se muestra la funcionalidad básica de esta clase y resultados de ejemplo. Dada la índole no determinista de random_device, los valores aleatorios que aparecen en la sección Resultado no coincidirán con los suyos. Esto es normal y lo que se espera.

// 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; 
}

Resultado:

  

Este ejemplo es simplista y no representa el caso de uso general de este generador. Para ver un código de ejemplo más ilustrativo, vea <random>.

Requisitos

Encabezado: <random>

Espacio de nombres: std

Vea también

Referencia

<random>