| (1) | (since C++11) | ||
| (2) | (since C++11) |
1) Constructs a new
std::random_device
object, making use of the argument token
, if provided, in implementation-defined manner. 2) The copy constructor is deleted:
std::random_device
is not copyable.Exceptions
Throws an implementation-defined exceptions derived from std::exception
on failure.
Notes
The implementations in libc++ and libstdc++ expect token
to be the name of a character device that produces random numbers when read from, with the default value "/dev/urandom"
, although where the CPU command RDRND is available, libstdc++ uses that as the default.
Example
Demonstrates the two commonly available types of std::random_device
on Linux.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | #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:
1 2 | 7 10 7 0 4 4 6 9 4 7 2 4 10 6 3 2 0 6 3 7 |
Please login to continue.