Compartir vía


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

Consulte también

<random>