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

FreeBSD Manual Pages

  
 
  

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 dis-
       tributed	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

		  .

	  std::uniform_real_distribution satisfies all requirements of
	  RandomNumberDistribution

Template parameters
	  RealType - The result	type generated by the generator. The effect is
       undefined 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 RandomNum-
       berDistribution.

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)
	  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
       return \(\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 <random>
	#include <iostream>

	int main()
	{
	    std::random_device	rd;   // Will be used to obtain	a seed for the
       random 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

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

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

home | help