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

FreeBSD Manual Pages

  
 
  

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) ran-
       dom 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;	,) =

	  1

	  2

	  exp

	  -1
	  2

	  x-

	   2

	  Here \(\small\mu\) is	the Mean and \(\small\sigma\) is the  Standard
       deviation
	  (stddev).

	  std::normal_distribution  satisfies  all  requirements of RandomNum-
       berDistribution.

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
	  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
       integer
	    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 Wol-
       fram Web
	      Resource.
	  2.  Normal distribution  From	Wikipedia.

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

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

home | help