Compartilhar via


Classe random_device

Gera uma sequência aleatória de um 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; };

Membros

random_device::random_device

random_device::entropy

random_device::operator()

Comentários

A classe descreve uma origem de números aleatórios e com permissão, embora não seja obrigada a ser não determinista ou protegida criptograficamente pelo padrão ISO C++. Na implementação do Visual Studio, os valores são não determinista e protegidos criptograficamente, mas são executados mais devagar que os geradores criados de mecanismos e adaptadores de mecanismos (como mersenne_twister_engine, o mecanismo rápido e de alta qualidade preferido pela maioria dos aplicativos).

Os resultados do random_device são distribuídos de maneira uniforme no intervalo fechado [0, 232).

O random_device não tem garantia de resultar em uma chamada sem bloqueio.

Em geral, o random_device é usado para semear outros geradores criados com mecanismos ou adaptadores de mecanismo. Para obter mais informações, consulte <random>.

Exemplo

O código a seguir demonstra a funcionalidade básica dessa classe e os exemplos de resultado. Devido à natureza não determinista do random_device, os valores aleatórios mostrados na seção Saída não corresponderão aos resultados. Isso é normal e esperado.

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

Saída:

  

Este exemplo é simplista e não representa o caso de uso geral desse gerador. Para obter um exemplo de código mais representativo, consulte <random>.

Requisitos

Cabeçalho: <random>

Namespace: std

Consulte também

Referência

<random>