std::random_device::random_device

From cppreference.com
 
 
 
 
std::random_device
Member functions
random_device::random_device
Generation
random_device::operator()
Characteristics
random_device::entropy
random_device::min
random_device::max
 
explicit random_device(const std::string& token = /*implementation-defined*/ );
(1) (since C++11)
random_device(const random_device& ) = delete;
(2) (since C++11)
1) Constructs a new std::random_device object, making use of the argument token, if provided, in implementation-defined manner. Typical implementation on a Linux system, for example, expects token to be the name of a character device that produces random numbers when read from, with the default value "/dev/urandom".
2) The copy constructor is deleted: std::random_device is not copyable.

[edit] Exceptions

Throws an implementation-defined exceptions derived from std::exception on failure.

[edit] Example

Demonstrates the two commonly available types of std::random_device on Linux

#include <iostream>
#include <random>
 
int main()
{
 
    std::uniform_int_distribution<int> d(0, 10);
 
    std::random_device rd1; // uses /dev/urandom
    for(int n = 0; n < 10; ++n)
        std::cout << d(rd1) << ' ';
    std::cout << '\n';
 
    std::random_device rd2("/dev/random"); // much slower on Linux
    for(int n = 0; n < 10; ++n)
        std::cout << d(rd2) << ' ';
    std::cout << '\n';
}

Output:

7 10 7 0 4 4 6 9 4 7 
2 4 10 6 3 2 0 6 3 7