Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

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
       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::ran-
       dom_device object
	  may generate the same	number sequence.

Member types
	  Member type Definition
	  result_type unsigned int

Member functions
Construction
	  constructor	   constructs the engine
	  (C++11)	   (public member function)
	  operator=	   the assignment operator is deleted
	  (deleted)	   (public member function)

Generation
	  operator()	   advances the	engine's state and returns the	gener-
       ated value
	  (C++11)	   (public member function)

Characteristics
			   obtains  the	entropy	estimate for the non-determin-
       istic random
	  entropy	   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
       is old versions
	  of MinGW (bug	338, fixed since GCC 9.2). The latest  MinGW  versions
       can be downloaded
	  from GCC with	the MCF	thread model.

Example
       // Run this code

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

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

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::random_device&sektion=3&manpath=FreeBSD+Ports+15.0>

home | help