random_device Class

Generates a random sequence from an external device.

class random_device {
public:
    typedef unsigned int result_type;
    explicit random_device(const std::string& token = /* implementation defined */);
    result_type min() const;
    result_type max() const;
    double entropy() const;
    result_type operator()();
private:
    random_device(const random_device&) = delete;
    void operator=(const random_device&) = delete;
    };

Remarks

The class describes a source of random numbers, preferably from a non-deterministic external device. In this implementation the values produced by default are non-deterministic and cryptographically secure. They are uniformly distributed in the closed range [0, 232).

Example

The following code demonstrates basic use of this class and example results.

// random_device_engine.cpp 
// cl.exe /W4 /nologo /EHsc /MTd 
#include <random> 
#include <iostream> 
using namespace std;

int main() 
{ 
    random_device engine; 
 
    cout << "entropy == " << engine.entropy() << endl; 
    cout << "min == " << engine.min() << endl; 
    cout << "max == " << engine.max() << endl; 
 
    cout << "a random value == " << engine() << endl; 
    cout << "a random value == " << engine() << endl; 
    cout << "a random value == " << engine() << endl; 
 
    return (0); 
} 
 
entropy == 32
min == 0
max == 4294967295
a random value == 1394551403
a random value == 2932543967
a random value == 2431218048

Requirements

Header: <random>

Namespace: std

See Also

Reference

<random>

random_device::entropy

random_device::operator()

random_device::random_device