# 25 Numerics library [numerics]

## 25.6 Random number generation [rand]

### 25.6.8 Random number distribution class templates [rand.dist]

#### 25.6.8.5.1 Class template normal_­distribution[rand.dist.norm.normal]

A normal_­distribution random number distribution produces random numbers x distributed according to the probability density function
The distribution parameters μ and σ are also known as this distribution's mean and standard deviation.
template<class RealType = double>
class normal_distribution {
public:
// types
using 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();

// generating functions
template<class URBG>
result_type operator()(URBG& g);
template<class URBG>
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;
};

explicit normal_distribution(RealType mean, RealType stddev = 1.0); 
Requires: .
Effects: Constructs a normal_­distribution object; mean and stddev correspond to the respective parameters of the distribution.
RealType mean() const; 
Returns: The value of the mean parameter with which the object was constructed.
RealType stddev() const; 
Returns: The value of the stddev parameter with which the object was constructed.

#### 25.6.8.5.2 Class template lognormal_­distribution[rand.dist.norm.lognormal]

A lognormal_­distribution random number distribution produces random numbers distributed according to the probability density function
template<class RealType = double>
class lognormal_distribution {
public:
// types
using 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();

// generating functions
template<class URBG>
result_type operator()(URBG& g);
template<class URBG>
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;
};

explicit lognormal_distribution(RealType m, RealType s = 1.0); 
Requires: .
Effects: Constructs a lognormal_­distribution object; m and s correspond to the respective parameters of the distribution.
RealType m() const; 
Returns: The value of the m parameter with which the object was constructed.
RealType s() const; 
Returns: The value of the s parameter with which the object was constructed.

#### 25.6.8.5.3 Class template chi_­squared_­distribution[rand.dist.norm.chisq]

A chi_­squared_­distribution random number distribution produces random numbers distributed according to the probability density function
template<class RealType = double>
class chi_squared_distribution {
public:
// types
using result_type = RealType;
using param_type  = unspecified;

// constructor and reset functions
chi_squared_distribution() : chi_squared_distribution(1) {}
explicit chi_squared_distribution(RealType n);
explicit chi_squared_distribution(const param_type& parm);
void reset();

// generating functions
template<class URBG>
result_type operator()(URBG& g);
template<class URBG>
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;
};

explicit chi_squared_distribution(RealType n); 
Requires: .
Effects: Constructs a chi_­squared_­distribution object; n corresponds to the parameter of the distribution.
RealType n() const; 
Returns: The value of the n parameter with which the object was constructed.

#### 25.6.8.5.4 Class template cauchy_­distribution[rand.dist.norm.cauchy]

A cauchy_­distribution random number distribution produces random numbers x distributed according to the probability density function
template<class RealType = double>
class cauchy_distribution {
public:
// types
using 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();

// generating functions
template<class URBG>
result_type operator()(URBG& g);
template<class URBG>
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;
};

explicit cauchy_distribution(RealType a, RealType b = 1.0); 
Requires: .
Effects: Constructs a cauchy_­distribution object; a and b correspond to the respective parameters of the distribution.
RealType a() const; 
Returns: The value of the a parameter with which the object was constructed.
RealType b() const; 
Returns: The value of the b parameter with which the object was constructed.

#### 25.6.8.5.5 Class template fisher_­f_­distribution[rand.dist.norm.f]

A fisher_­f_­distribution random number distribution produces random numbers distributed according to the probability density function
template<class RealType = double>
class fisher_f_distribution {
public:
// types
using result_type = RealType;
using param_type  = unspecified;

// constructor and reset functions
fisher_f_distribution() : fisher_f_distribution(1) {}
explicit fisher_f_distribution(RealType m, RealType n = 1);
explicit fisher_f_distribution(const param_type& parm);
void reset();

// generating functions
template<class URBG>
result_type operator()(URBG& g);
template<class URBG>
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;
};

explicit fisher_f_distribution(RealType m, RealType n = 1); 
Requires: and .
Effects: Constructs a fisher_­f_­distribution object; m and n correspond to the respective parameters of the distribution.
RealType m() const; 
Returns: The value of the m parameter with which the object was constructed.
RealType n() const; 
Returns: The value of the n parameter with which the object was constructed.

#### 25.6.8.5.6 Class template student_­t_­distribution[rand.dist.norm.t]

A student_­t_­distribution random number distribution produces random numbers x distributed according to the probability density function
template<class RealType = double>
class student_t_distribution {
public:
// types
using result_type = RealType;
using param_type  = unspecified;

// constructor and reset functions
student_t_distribution() : student_t_distribution(1) {}
explicit student_t_distribution(RealType n);
explicit student_t_distribution(const param_type& parm);
void reset();

// generating functions
template<class URBG>
result_type operator()(URBG& g);
template<class URBG>
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;
};

explicit student_t_distribution(RealType n); 
Requires: .
Effects: Constructs a student_­t_­distribution object; n corresponds to the parameter of the distribution.
RealType n() const; 
Returns: The value of the n parameter with which the object was constructed.