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

FreeBSD Manual Pages

  
 
  

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

NAME
       std::gamma_distribution - std::gamma_distribution

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

	  Produces  random  positive  floating-point values x, distributed ac-
       cording to
	  probability density function:

	  \(\mathsf{p}(x\mid\alpha,\beta) = \frac{e^{-x/\beta}
	  }{\beta^\alpha\cdot\Gamma(\alpha)}\cdot x^{\alpha-1} \)P(x|,)	=

	  e-x/

	   ()

	   x-1

	  where	 is known as the shape parameter and  is known	as  the	 scale
       parameter. The
	  shape	 parameter  is sometimes denoted by the	letter k and the scale
       parameter is
	  sometimes denoted by the letter .

	  For floating-point , the value obtained is the sum  of   independent
       exponentially
	  distributed random variables,	each of	which has a mean of .

	  std::gamma_distribution satisfies 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
	  alpha		returns	the distribution parameters
	  beta		(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 <iomanip>
	#include <iostream>
	#include <map>
	#include <random>
	#include <string>

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

	    // A gamma distribution with alpha = 1, and	beta = 2
	    // approximates an exponential distribution.
	    std::gamma_distribution<> d(1, 2);

	    std::map<int, int> hist;
	    for	(int n = 0; n != 10000;	++n)
		++hist[2 * d(gen)];

	    for	(auto const& [x, y] : hist)
		if (y /	100.0 >	0.5)
		    std::cout << std::fixed << std::setprecision(1)
			      << x / 2.0 << '-'	<< (x +	1) / 2.0 << ' '
			      << std::string(y / 100, '*') << '\n';
	}

Possible output:
	0.0-0.5	**********************
	0.5-1.0	****************
	1.0-1.5	*************
	1.5-2.0	**********
	2.0-2.5	********
	2.5-3.0	******
	3.0-3.5	*****
	3.5-4.0	****
	4.0-4.5	***
	4.5-5.0	**
	5.0-5.5	**
	5.5-6.0	*
	6.0-6.5	*
	6.5-7.0
	7.0-7.5
	7.5-8.0

External links
	  Weisstein,  Eric  W. "Gamma Distribution." From MathWorld  A Wolfram
       Web Resource.

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

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

home | help