Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Generates a random sequence from an external device.
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;
};
Members
Remarks
The class describes a source of random numbers, and is allowed but not required to be non-deterministic or cryptographically secure by the ISO C++ Standard. In the Visual Studio implementation the values produced are non-deterministic and cryptographically secure, but runs more slowly than generators created from engines and engine adaptors (such as mersenne_twister_engine, the high quality and fast engine of choice for most applications).
random_device results are uniformly distributed in the closed range [0, 232).
random_device is not guaranteed to result in a non-blocking call.
Generally, random_device is used to seed other generators created with engines or engine adaptors. For more information, see <random>.
Example
The following code demonstrates basic functionality of this class and example results. Because of the non-deterministic nature of random_device, the random values shown in the Output section will not match your results. This is normal and expected.
// 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; 
}
Output:
entropy == 32 min == 0 max == 4294967295 10 random values: 4183829181 1454391608 1176278697 2468830096 3959347222 1803123400 1339590545 1304896877 604088490 2293276253
This example is simplistic and not representative of the general use-case for this generator. For a more representative code example, see <random>.
Requirements
Header: <random>
Namespace: std