random_device (Clase)
Genera una secuencia aleatoria desde un dispositivo externo.
Sintaxis
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;
};
Miembros
random_device
entropía
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, 2
32).
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 naturaleza 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;
}
entropy == 32
min == 0
max == 4294967295
a random value == 2378414971
a random value == 3633694716
a random value == 213725214
Este ejemplo es simplista y no representa el caso de uso general de este generador. Para obtener un código de ejemplo representativo, vea <random>.
Requisitos
Encabezado:<random>
Espacio de nombres: std
random_device::random_device
Construye el generador.
random_device(const std::string& = "");
Comentarios
El constructor inicializa el generador según sea necesario, omitiendo el parámetro de cadena. Genera un valor de un tipo definido en la implementación que se deriva de una excepción si random_device
no se pudo inicializar.
random_device::entropy
Estima la aleatoriedad del origen.
double entropy() const noexcept;
Comentarios
La función miembro devuelve una estimación de la aleatoriedad del origen, medida en bits.
random_device::operator()
Devuelve un valor aleatorio.
result_type operator()();
Comentarios
Devuelve valores distribuidos uniformemente en el intervalo cerrado [min, max
] como lo determinan las funciones miembro min()
y max()
. Inicia un valor de un tipo definido por la implementación derivado de la excepción si no se ha podido obtener un número aleatorio.