std::random_device::random_device(3)

NAME
std::random_device::random_device - std::random_device::random_device

Synopsis
   random_device() : random_device(/*implementation-defined*/) {} (1) (since C++11)
   explicit random_device(const std::string& token); (2) (since C++11)
   random_device(const random_device& ) = delete; (3) (since C++11)
   1) Default constructs a new std::random_device object with an implementation-defined
   token.
   2) Constructs a new std::random_device object, making use of the argument token in
   an implementation-defined manner.
   3) The copy constructor is deleted: std::random_device is not copyable nor movable.

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

Notes
   The implementation in libstdc++ expects token to name the source of random bytes.
   Possible token values include "default", "rand_s", "rdseed", "rdrand", "rdrnd",
   "/dev/urandom", "/dev/random", "mt19937", and integer string specifying the seed of
   the mt19937 engine. (Token values other than "default" are only valid for certain
   targets.)
   The implementation in libc++, when configured to use character device as the source,
   expects token to be the name of a character device that produces random numbers when
   read from; otherwise it expects token to be "/dev/urandom".
   Both libstdc++ and libc++ throw an exception if provided an unsupported token.
   Microsoft's stdlib ignores the token entirely.

Example
   Demonstrates the two commonly available types of std::random_device on Linux // Run this code
 #include <iostream>
 #include <random>
 int main()
 {
     std::uniform_int_distribution<int> d(0, 10);
     std::random_device rd1; // uses RDRND or /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';
 }

Possible output:
 7 10 7 0 4 4 6 9 4 7
 2 4 10 6 3 2 0 6 3 7
  Defect reports
   The following behavior-changing defect reports were applied retroactively to
   previously published C++ standards.
     DR Applied to Behavior as published Correct behavior
   P0935R0 C++11 default constructor was explicit made implicit