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

NAME
     std::normal_distribution - std::normal_distribution

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

	Generates  random  numbers  according to the Normal (or Gaussian) random
     number
	distribution. It is defined as:

	\(\small{f(x;\mu,\sigma)}=\frac{1}{\sigma\sqrt{2\pi}
	}\exp{(-\frac{1}{2}{(\frac{x-\mu}{\sigma})}^2)}\)f(x; I1/4,I) =

	1
	I
	a
	2I

	expa
	a
	a

	-1
	2

	a
	a
	a

	x-I1/4
	I

	a
	a
	a 2
	a
	a
	a

	Here \(\small\mu\)I1/4 is the Mean and \(\small\sigma\)I is the Standard
     deviation
	(stddev).

	std::normal_distribution satisfies all requirements of	RandomNumberDis-
     tribution.

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
	mean	      returns the distribution parameters
	stddev	      (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)

Example
     // Run this code

      #include <cmath>
      #include <iomanip>
      #include <iostream>
      #include <map>
      #include <random>
      #include <string>

      int main()
      {
	  std::random_device rd{};
	  std::mt19937 gen{rd()};

	  // values near the mean are the most likely
	  //  standard deviation affects the dispersion of generated values from
     the mean
	  std::normal_distribution d{5.0, 2.0};

	  // draw a sample from the normal distribution and round it to an inte-
     ger
	  auto random_int = [&d, &gen]{ return std::round(d(gen)); };

	  std::map<int, int> hist{};
	  for (int n = 0; n != 10000; ++n)
	      ++hist[random_int()];

	  for (auto [x, y] : hist)
	      std::cout << std::setw(2) << x << ' ' << std::string(y / 200, '*')
     << '\n';
      }

Possible output:
      -2
      -1
       0
       1 *
       2 ***
       3 ******
       4 ********
       5 **********
       6 ********
       7 *****
       8 ***
       9 *
      10
      11
      12

External links
	1.  Weisstein, Eric W. "Normal Distribution." From MathWorld a A Wolfram
     Web
	    Resource.
	2.  Normal distribution a From Wikipedia.

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

home | help