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