# 26 Numerics library [numerics]

## 26.5 Random number generation [rand]

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

#### 26.5.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
typedef RealType result_type;
typedef unspecified param_type;

// constructors and reset functions
explicit normal_distribution(RealType mean = 0.0, RealType stddev = 1.0);
explicit normal_distribution(const param_type& parm);
void reset();

// generating functions
template<class URNG>
result_type operator()(URNG& g);
template<class URNG>
result_type operator()(URNG& 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 = 0.0, RealType stddev = 1.0); 

Requires: 0 < stddev .

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.

#### 26.5.8.5.2 Class template lognormal_distribution[rand.dist.norm.lognormal]

A lognormal_distribution random number distribution produces random numbers x > 0 distributed according to the probability density function

template<class RealType = double>
class lognormal_distribution{
public:
// types
typedef RealType result_type;
typedef unspecified param_type;

// constructor and reset functions
explicit lognormal_distribution(RealType m = 0.0, RealType s = 1.0);
explicit lognormal_distribution(const param_type& parm);
void reset();

// generating functions
template<class URNG>
result_type operator()(URNG& g);
template<class URNG>
result_type operator()(URNG& 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 = 0.0, RealType s = 1.0); 

Requires: 0 < s .

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.

#### 26.5.8.5.3 Class template chi_squared_distribution[rand.dist.norm.chisq]

A chi_squared_distribution random number distribution produces random numbers x>0 distributed according to the probability density function

template<class RealType = double>
class chi_squared_distribution{
public:
// types
typedef RealType result_type;
typedef unspecified param_type;

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

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

Requires: 0 < n .

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.

#### 26.5.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
typedef RealType result_type;
typedef unspecified param_type;

// constructor and reset functions
explicit cauchy_distribution(RealType a = 0.0, RealType b = 1.0);
explicit cauchy_distribution(const param_type& parm);
void reset();

// generating functions
template<class URNG>
result_type operator()(URNG& g);
template<class URNG>
result_type operator()(URNG& 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 = 0.0, RealType b = 1.0); 

Requires: 0 < b .

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.

#### 26.5.8.5.5 Class template fisher_f_distribution[rand.dist.norm.f]

A fisher_f_distribution random number distribution produces random numbers x≥0 distributed according to the probability density function

template<class RealType = double>
class fisher_f_distribution{
public:
// types
typedef RealType result_type;
typedef unspecified param_type;

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

// generating functions
template<class URNG>
result_type operator()(URNG& g);
template<class URNG>
result_type operator()(URNG& 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 = 1, RealType n = 1); 

Requires: 0 < m and 0 < n .

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.

#### 26.5.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
typedef RealType result_type;
typedef unspecified param_type;

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

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

Requires: 0 < n .

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.