[rand.dist.pois] # 29 Numerics library [[numerics]](./#numerics) ## 29.5 Random number generation [[rand]](rand#dist.pois) ### 29.5.9 Random number distribution class templates [[rand.dist]](rand.dist#pois) #### 29.5.9.4 Poisson distributions [rand.dist.pois] #### [29.5.9.4.1](#poisson) Class template poisson_distribution [[rand.dist.pois.poisson]](rand.dist.pois.poisson) [1](#poisson-1) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/numerics.tex#L5157) A poisson_distribution random number distribution produces integer values i ≥ 0 distributed according to the discrete probability function in Formula [29.8](#eq:rand.dist.pois.poisson)[.](#poisson-1.sentence-1) P(i|μ)=e−μμii!(29.8) The distribution parameter μ is also known as this distribution's [*mean*](#def:mean)[.](#poisson-1.sentence-2) [🔗](#lib:poisson_distribution_) namespace std {templateclass poisson_distribution {public:// typesusing result_type = IntType; using param_type = *unspecified*; // constructors and reset functions poisson_distribution() : poisson_distribution(1.0) {}explicit poisson_distribution(double mean); explicit poisson_distribution(const param_type& parm); void reset(); // equality operatorsfriend bool operator==(const poisson_distribution& x, const poisson_distribution& y); // generating functionstemplate result_type operator()(URBG& g); template result_type operator()(URBG& g, const param_type& parm); // property functionsdouble mean() const; param_type param() const; void param(const param_type& parm); result_type min() const; result_type max() const; // inserters and extractorstemplatefriend basic_ostream&operator<<(basic_ostream& os, const poisson_distribution& x); templatefriend basic_istream&operator>>(basic_istream& is, poisson_distribution& x); };} [🔗](#lib:poisson_distribution,constructor) `explicit poisson_distribution(double mean); ` [2](#poisson-2) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/numerics.tex#L5218) *Preconditions*: 00 distributed according to the probability density function in Formula [29.9](#eq:rand.dist.pois.exp)[.](#exp-1.sentence-1) p(x|λ)=λe−λx(29.9) [🔗](#lib:exponential_distribution_) namespace std {templateclass exponential_distribution {public:// typesusing result_type = RealType; using param_type = *unspecified*; // constructors and reset functions exponential_distribution() : exponential_distribution(1.0) {}explicit exponential_distribution(RealType lambda); explicit exponential_distribution(const param_type& parm); void reset(); // equality operatorsfriend bool operator==(const exponential_distribution& x, const exponential_distribution& y); // generating functionstemplate result_type operator()(URBG& g); template result_type operator()(URBG& g, const param_type& parm); // property functions RealType lambda() const; param_type param() const; void param(const param_type& parm); result_type min() const; result_type max() const; // inserters and extractorstemplatefriend basic_ostream&operator<<(basic_ostream& os, const exponential_distribution& x); templatefriend basic_istream&operator>>(basic_istream& is, exponential_distribution& x); };} [🔗](#lib:exponential_distribution,constructor) `explicit exponential_distribution(RealType lambda); ` [2](#exp-2) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/numerics.tex#L5305) *Preconditions*: 00 distributed according to the probability density function in Formula [29.10](#eq:rand.dist.pois.gamma)[.](#gamma-1.sentence-1) p(x|α,β)=e−x/ββαâ‹Î“(α)â‹xα−1(29.10) [🔗](#lib:gamma_distribution_) namespace std {templateclass gamma_distribution {public:// typesusing result_type = RealType; using param_type = *unspecified*; // constructors and reset functions gamma_distribution() : gamma_distribution(1.0) {}explicit gamma_distribution(RealType alpha, RealType beta = 1.0); explicit gamma_distribution(const param_type& parm); void reset(); // equality operatorsfriend bool operator==(const gamma_distribution& x, const gamma_distribution& y); // generating functionstemplate result_type operator()(URBG& g); template result_type operator()(URBG& g, const param_type& parm); // property functions RealType alpha() const; RealType beta() const; param_type param() const; void param(const param_type& parm); result_type min() const; result_type max() const; // inserters and extractorstemplatefriend basic_ostream&operator<<(basic_ostream& os, const gamma_distribution& x); templatefriend basic_istream&operator>>(basic_istream& is, gamma_distribution& x); };} [🔗](#lib:gamma_distribution,constructor) `explicit gamma_distribution(RealType alpha, RealType beta = 1.0); ` [2](#gamma-2) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/numerics.tex#L5394) *Preconditions*: 0class weibull_distribution {public:// typesusing result_type = RealType; using param_type = *unspecified*; // constructor and reset functions weibull_distribution() : weibull_distribution(1.0) {}explicit weibull_distribution(RealType a, RealType b = 1.0); explicit weibull_distribution(const param_type& parm); void reset(); // equality operatorsfriend bool operator==(const weibull_distribution& x, const weibull_distribution& y); // generating functionstemplate result_type operator()(URBG& g); template result_type operator()(URBG& g, const param_type& parm); // property functions RealType a() const; RealType b() const; param_type param() const; void param(const param_type& parm); result_type min() const; result_type max() const; // inserters and extractorstemplatefriend basic_ostream&operator<<(basic_ostream& os, const weibull_distribution& x); templatefriend basic_istream&operator>>(basic_istream& is, weibull_distribution& x); };} [🔗](#lib:weibull_distribution,constructor) `explicit weibull_distribution(RealType a, RealType b = 1.0); ` [2](#weibull-2) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/numerics.tex#L5497) *Preconditions*: 0class extreme_value_distribution {public:// typesusing result_type = RealType; using param_type = *unspecified*; // constructor and reset functions extreme_value_distribution() : extreme_value_distribution(0.0) {}explicit extreme_value_distribution(RealType a, RealType b = 1.0); explicit extreme_value_distribution(const param_type& parm); void reset(); // equality operatorsfriend bool operator==(const extreme_value_distribution& x, const extreme_value_distribution& y); // generating functionstemplate result_type operator()(URBG& g); template result_type operator()(URBG& g, const param_type& parm); // property functions RealType a() const; RealType b() const; param_type param() const; void param(const param_type& parm); result_type min() const; result_type max() const; // inserters and extractorstemplatefriend basic_ostream&operator<<(basic_ostream& os, const extreme_value_distribution& x); templatefriend basic_istream&operator>>(basic_istream& is, extreme_value_distribution& x); };} [🔗](#lib:extreme_value_distribution,constructor) `explicit extreme_value_distribution(RealType a, RealType b = 1.0); ` [2](#extreme-2) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/numerics.tex#L5610) *Preconditions*: 0