Defined in header <random>  

class random_device;  (since C++11) 
std::random_device
is a uniformlydistributed integer random number generator that produces nondeterministic random numbers.
std::random_device
may be implemented in terms of an implementationdefined pseudorandom number engine if a nondeterministic 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 type  Definition 

result_type  unsigned int 
Construction 

constructs the engine (public member function) 

operator=
(deleted)  the assignment operator is deleted (public member function) 
Generation 

advances the engine's state and returns the generated value (public member function) 

Characteristics 

obtains the entropy estimate for the nondeterministic random number generator (public member function) 

[static]  gets the smallest possible value in the output range (public static member function) 
[static]  gets the largest possible value in the output range (public static member function) 
A notable implementation where std::random_device
is deterministic is MinGW (bug 338), although replacement implementations exist, such as mingwstdrandom_device.
#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:
0 : ******************** 1 : ******************* 2 : ******************** 3 : ******************** 4 : ******************** 5 : ******************* 6 : ******************** 7 : ******************** 8 : ******************* 9 : ********************
© cppreference.com
Licensed under the Creative Commons AttributionShareAlike Unported License v3.0.
http://en.cppreference.com/w/cpp/numeric/random/random_device