home | help
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 gen-
     erator that
	produces non-deterministic random numbers.

	std::random_device  may be implemented in terms of an implementation-de-
     fined
	pseudo-random number engine if a non-deterministic source (e.g. a  hard-
     ware device)
	is  not  available  to	the  implementation. In this case each std::ran-
     dom_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  ver-
     sions 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 prac-
     tical 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 : ********************

http://cppreference.com 	   2024.06.10		   std::random_device(3)

home | help