< cpp‎ | numeric‎ | random
Pseudo-random number generation
Engines and engine adaptors
Uniform distributions
Bernoulli distributions
Poisson distributions
Normal distributions
Sampling distributions
Seed Sequences
C library
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.

Note that std::random_device may be implemented in terms of a pseudo-random number engine if a non-deterministic source (e.g. a hardware device) is not available to the implementation.


[edit] Member types

Member type Definition
result_type unsigned int

[edit] Member functions

constructs the engine
(public member function)
the assignment operator is deleted
(public member function)
advances the engine's state and returns the generated value
(public member function)
obtains the entropy estimate for the non-deterministic random number generator
(public member function)
gets the smallest possible value in the output range
(public static member function)
gets the largest possible value in the output range
(public static member function)

[edit] Example

#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 : ********************