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

FreeBSD Manual Pages

  
 
  

home | help
std::generate_canonical(3)    C++ Standard Libary   std::generate_canonical(3)

NAME
       std::generate_canonical - std::generate_canonical

Synopsis
	  Defined in header <random>
	  template<  class  RealType,  std::size_t  Bits,  class  Generator  >
       (since C++11)
	  RealType generate_canonical( Generator& g );

	  Generates a random floating point number in range [0,	1).

	  To generate enough entropy, generate_canonical() will	call  g()  ex-
       actly \(\small k\)k
	  times,   where  \(\small  k  =  \max(1,  \lceil  \frac{b}{\log_2  R}
       \rceil)\)k = max(1,  b
	  / log
	  2 R )	and

	    *  b  =  std::min(Bits,   std::size_t   {std::numeric_limits<Real-
       Type>::digits}),
	    * R	= g.max() - g.min() + 1.

Parameters
	  g - generator	to use to acquire entropy

Return value
	  Floating point value in range	[0, 1).

Exceptions
	  None except from those thrown	by g.

Notes
	  Some existing	implementations	have a bug where they may occasionally
       return 1.0 if
	  RealType is float GCC	#63176 LLVM #18767 MSVC	STL #1074. This	is LWG
       issue 2524.

Example
	  Produce  random numbers with 10 bits of randomness: this may produce
       only k *	R
	  distinct values.

       // Run this code

	#include <iostream>
	#include <random>

	int main()
	{
	    std::random_device rd;
	    std::mt19937 gen(rd());
	    for	(int n = 0; n <	10; ++n)
		std::cout << std::generate_canonical<double, 10>(gen) << ' ';
	    std::cout << '\n';
	}

Possible output:
	0.208143  0.824147  0.0278604  0.343183	 0.0173263  0.864057  0.647037
       0.539467	0.0583497 0.609219

See also
	  uniform_real_distribution  produces  real  values evenly distributed
       across a	range
	  (C++11)		    (class template)

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

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

home | help