[rand.dist.norm] # 29 Numerics library [[numerics]](./#numerics) ## 29.5 Random number generation [[rand]](rand#dist.norm) ### 29.5.9 Random number distribution class templates [[rand.dist]](rand.dist#norm) #### 29.5.9.5 Normal distributions [rand.dist.norm] #### [29.5.9.5.1](#normal) Class template normal_distribution [[rand.dist.norm.normal]](rand.dist.norm.normal) [1](#normal-1) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/numerics.tex#L5663) A normal_distribution random number distribution produces random numbers x distributed according to the probability density function in Formula [29.13](#eq:rand.dist.norm.normal)[.](#normal-1.sentence-1) p(x|μ,σ)=1σ√2πâ‹exp(−(x−μ)22σ2)(29.13) The distribution parameters μ and σ are also known as this distribution's [*mean*](#def:mean) and [*standard deviation*](#def:standard_deviation)[.](#normal-1.sentence-2) [🔗](#lib:normal_distribution_) namespace std {templateclass normal_distribution {public:// typesusing result_type = RealType; using param_type = *unspecified*; // constructors and reset functions normal_distribution() : normal_distribution(0.0) {}explicit normal_distribution(RealType mean, RealType stddev = 1.0); explicit normal_distribution(const param_type& parm); void reset(); // equality operatorsfriend bool operator==(const normal_distribution& x, const normal_distribution& y); // generating functionstemplate result_type operator()(URBG& g); template result_type operator()(URBG& g, const param_type& parm); // property functions RealType mean() const; RealType stddev() 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 normal_distribution& x); templatefriend basic_istream&operator>>(basic_istream& is, normal_distribution& x); };} [🔗](#lib:normal_distribution,constructor) `explicit normal_distribution(RealType mean, RealType stddev = 1.0); ` [2](#normal-2) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/numerics.tex#L5733) *Preconditions*: 00 distributed according to the probability density function in Formula [29.14](#eq:rand.dist.norm.lognormal)[.](#lognormal-1.sentence-1) p(x|m,s)=1sx√2πâ‹exp(−(lnx−m)22s2)(29.14) [🔗](#lib:lognormal_distribution_) namespace std {templateclass lognormal_distribution {public:// typesusing result_type = RealType; using param_type = *unspecified*; // constructor and reset functions lognormal_distribution() : lognormal_distribution(0.0) {}explicit lognormal_distribution(RealType m, RealType s = 1.0); explicit lognormal_distribution(const param_type& parm); void reset(); // equality operatorsfriend bool operator==(const lognormal_distribution& x, const lognormal_distribution& y); // generating functionstemplate result_type operator()(URBG& g); template result_type operator()(URBG& g, const param_type& parm); // property functions RealType m() const; RealType s() 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 lognormal_distribution& x); templatefriend basic_istream&operator>>(basic_istream& is, lognormal_distribution& x); };} [🔗](#lib:lognormal_distribution,constructor) `explicit lognormal_distribution(RealType m, RealType s = 1.0); ` [2](#lognormal-2) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/numerics.tex#L5836) *Preconditions*: 00 distributed according to the probability density function in Formula [29.15](#eq:rand.dist.norm.chisq)[.](#chisq-1.sentence-1) p(x|n)=x(n/2)−1â‹e−x/2Γ(n/2)â‹2n/2(29.15) [🔗](#lib:chi_squared_distribution_) namespace std {templateclass chi_squared_distribution {public:// typesusing result_type = RealType; using param_type = *unspecified*; // constructor and reset functions chi_squared_distribution() : chi_squared_distribution(1.0) {}explicit chi_squared_distribution(RealType n); explicit chi_squared_distribution(const param_type& parm); void reset(); // equality operatorsfriend bool operator==(const chi_squared_distribution& x, const chi_squared_distribution& y); // generating functionstemplate result_type operator()(URBG& g); template result_type operator()(URBG& g, const param_type& parm); // property functions RealType n() 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 chi_squared_distribution& x); templatefriend basic_istream&operator>>(basic_istream& is, chi_squared_distribution& x); };} [🔗](#lib:chi_squared_distribution,constructor) `explicit chi_squared_distribution(RealType n); ` [2](#chisq-2) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/numerics.tex#L5936) *Preconditions*: 0class cauchy_distribution {public:// typesusing result_type = RealType; using param_type = *unspecified*; // constructor and reset functions cauchy_distribution() : cauchy_distribution(0.0) {}explicit cauchy_distribution(RealType a, RealType b = 1.0); explicit cauchy_distribution(const param_type& parm); void reset(); // equality operatorsfriend bool operator==(const cauchy_distribution& x, const cauchy_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 cauchy_distribution& x); templatefriend basic_istream&operator>>(basic_istream& is, cauchy_distribution& x); };} [🔗](#lib:cauchy_distribution,constructor) `explicit cauchy_distribution(RealType a, RealType b = 1.0); ` [2](#cauchy-2) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/numerics.tex#L6025) *Preconditions*: 0class fisher_f_distribution {public:// typesusing result_type = RealType; using param_type = *unspecified*; // constructor and reset functions fisher_f_distribution() : fisher_f_distribution(1.0) {}explicit fisher_f_distribution(RealType m, RealType n = 1.0); explicit fisher_f_distribution(const param_type& parm); void reset(); // equality operatorsfriend bool operator==(const fisher_f_distribution& x, const fisher_f_distribution& y); // generating functionstemplate result_type operator()(URBG& g); template result_type operator()(URBG& g, const param_type& parm); // property functions RealType m() const; RealType n() 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 fisher_f_distribution& x); templatefriend basic_istream&operator>>(basic_istream& is, fisher_f_distribution& x); };} [🔗](#lib:fisher_f_distribution,constructor) `explicit fisher_f_distribution(RealType m, RealType n = 1); ` [2](#f-2) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/numerics.tex#L6129) *Preconditions*: 0class student_t_distribution {public:// typesusing result_type = RealType; using param_type = *unspecified*; // constructor and reset functions student_t_distribution() : student_t_distribution(1.0) {}explicit student_t_distribution(RealType n); explicit student_t_distribution(const param_type& parm); void reset(); // equality operatorsfriend bool operator==(const student_t_distribution& x, const student_t_distribution& y); // generating functionstemplate result_type operator()(URBG& g); template result_type operator()(URBG& g, const param_type& parm); // property functions RealType n() 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 student_t_distribution& x); templatefriend basic_istream&operator>>(basic_istream& is, student_t_distribution& x); };} [🔗](#lib:student_t_distribution,constructor) `explicit student_t_distribution(RealType n); ` [2](#t-2) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/numerics.tex#L6231) *Preconditions*: 0