std::random_device (3) Linux Manual Page
std::random_device – std::random_device
Synopsis
Defined in header <random>
class random_device; (since C++11)
std::random_device is a uniformly-distributed integer random number generator that produces non-deterministic random numbers.
std::random_device may be implemented in terms of an implementation-defined pseudo-random number engine if a non-deterministic source (e.g. a hardware device) is not available to the implementation. In this case each std::random_device object may generate the same number sequence.
Member types
Member type Definition
result_type unsigned int
Member functions
Construction
constructor (public member function)
operator= the assignment operator is deleted
(deleted)
Generation
operator() (public member function)
Characteristics
entropy (public member function)
min gets the smallest possible value in the output range
[static]
max gets the largest possible value in the output range
[static]
Notes
A notable implementation where std::random_device is deterministic is MinGW (bug_338), although replacement implementations exist, such as mingw-std-random_device.
Example
// Run this code
#include <iostream>
#include <string>
#include <map>
#include <random>
int main()
{
std::random_device rd;
std::map<int, int> hist;
std::uniform_int_distribution<int> dist(0, 9);
for (int n = 0; n < 20000; ++n) {
++hist[dist(rd)]; // note: demo only: the performance of many
// implementations of random_device degrades sharply
// once the entropy pool is exhausted. For practical use
// random_device is generally only used to seed
// a PRNG such as mt19937
}
for (auto p : hist) {
std::cout << p.first << " : " << std::string(p.second / 100, '*') << '\n';
}
}
Possible output:
