home | help
std::unifor...istribution(3)   C++ Standard Libary  std::unifor...istribution(3)

NAME
     std::uniform_real_distribution - std::uniform_real_distribution

Synopsis
	Defined in header <random>
	template< class RealType = double >  (since C++11)
	class uniform_real_distribution;

	Produces  random floating-point values \(\small x\)x, uniformly distrib-
     uted on the
	interval \(\small [a, b)\)[a, b), that is, distributed according to  the
     probability
	density function:

	\({\small P(x|a,b) =} \frac{1}{b-a}\)P(x|a,b) =

	1
	b a a

	.

	std::uniform_real_distribution satisfies all requirements of
	RandomNumberDistribution.

Template parameters
	RealType - The result type generated by the generator. The effect is un-
     defined if
		   this is not one of float, double, or long double.

Member types
	Member type	   Definition
	result_type(C++11) RealType
	param_type  (C++11)  the type of the parameter set, see RandomNumberDis-
     tribution.

Member functions
	constructor   constructs new distribution
	(C++11)       (public member function)
	reset	      resets the internal state of the distribution
	(C++11)       (public member function)

Generation
	operator()    generates the next random number in the distribution
	(C++11)       (public member function)

Characteristics
	a	      returns the distribution parameters
	b	      (public member function)
	(C++11)
	param	      gets or sets the distribution parameter object
	(C++11)       (public member function)
	min	      returns the minimum potentially generated value
	(C++11)       (public member function)
	max	      returns the maximum potentially generated value
	(C++11)       (public member function)

Non-member functions
	operator==
	operator!=		  compares two distribution objects
	(C++11) 		  (function)
	(C++11)(removed in C++20)
	operator<<		  performs stream input and  output  on  pseudo-
     random number
	operator>>		  distribution
	(C++11) 		  (function template)

Notes
	It  is	difficult  to  create  a  distribution	over the closed interval
     \(\small[a,
	b]\)[a, b] from this distribution. Using std::nextafter(b,
	std::numeric_limits<RealType>::max()) as the second parameter  does  not
     always work
	due to rounding error.

	Most existing implementations have a bug where they may occasionally re-
     turn \(\small
	b\)b  (GCC  #63176 LLVM #18767 MSVC STL #1074). This was originally only
     thought to
	happen when RealType is float and when LWG issue 2524 is present, but it
     has since
	been shown that neither is required to trigger the bug.

Example
	Print 10 random numbers between 1 and 2.

     // Run this code

      #include <iostream>
      #include <random>

      int main()
      {
	  std::random_device rd;  // Will be used to obtain a seed for the  ran-
     dom number engine
	  std::mt19937	gen(rd());  //	Standard  mersenne_twister_engine seeded
     with rd()
	  std::uniform_real_distribution<> dis(1.0, 2.0);
	  for (int n = 0; n < 10; ++n)
	      // Use dis to transform the random unsigned int generated  by  gen
     into a
	      //  double in [1, 2). Each call to dis(gen) generates a new random
     double.
	      std::cout << dis(gen) << ' ';
	  std::cout << '\n';
      }

Possible output:
      1.80829 1.15391 1.18483 1.38969 1.36094  1.0648  1.97798	1.27984  1.68261
     1.57326

External links
	Drawing  random  floating-point  numbers  from	an interval a A(C) 2022.
     FrA(C)dA(C)ric Goualard,
	UniversitA(C) de Nantes.

http://cppreference.com 	   2024.06.10	    std::unifor...istribution(3)

home | help