table of contents
        
      
      
    - Tumbleweed 2024.07.05-1.3
 - Leap-16.0
 - Leap-15.6
 
| std::random_device(3) | C++ Standard Libary | std::random_device(3) | 
NAME¶
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 (C++11) unsigned int
Member functions¶
Construction¶
 constructor constructs the engine
  
   (C++11) (public member function)
  
   operator= the assignment operator is deleted
  
   (deleted) (C++11) (public member function)
Generation¶
 operator() advances the engine's state and returns the generated
    value
  
   (C++11) (public member function)
Characteristics¶
 entropy obtains the entropy estimate for the non-deterministic
    random
  
   (C++11) number generator
  
   (public member function)
  
   min gets the smallest possible value in the output range
  
   [static] (C++11) (public static member function)
  
   max gets the largest possible value in the output range
  
   [static] (C++11) (public static member function)
Notes¶
 A notable implementation where std::random_device is
    deterministic in old versions
  
   of MinGW-w64 (bug 338, fixed since GCC 9.2). The latest MinGW-w64 versions
    can be
  
   downloaded from GCC with the MCF thread model.
Example¶
// Run this code
  
   #include <iostream>
  
   #include <map>
  
   #include <random>
  
   #include <string>
  
   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 [x, y] : hist)
  
   std::cout << x << " : " << std::string(y / 100,
    '*') << '\n';
  
   }
Possible output:¶
 0 : ********************
  
   1 : *******************
  
   2 : ********************
  
   3 : ********************
  
   4 : ********************
  
   5 : *******************
  
   6 : ********************
  
   7 : ********************
  
   8 : *******************
  
   9 : ********************
| 2024.06.10 | http://cppreference.com |