ExRandom  3.0
exrandom::unit_exponential_distribution< RealType > Class Template Reference

Sample exactly from the unit exponential distribution. More...

#include <exrandom/unit_exponential_distribution.hpp>

Classes

struct  param_type
 Parameter type for unit_exponential_distribution. More...
 

Public Types

typedef RealType result_type
 

Public Member Functions

 unit_exponential_distribution ()
 
 unit_exponential_distribution (const param_type &)
 
void reset ()
 
param_type param () const
 
void param (const param_type &)
 
result_type min () const
 
result_type max () const
 
template<typename Generator >
result_type operator() (Generator &g)
 
template<typename Generator >
result_type operator() (Generator &g, const param_type &)
 

Friends

bool operator== (const unit_exponential_distribution< RealType > &, const unit_exponential_distribution< RealType > &)
 
bool operator!= (const unit_exponential_distribution< RealType > &, const unit_exponential_distribution< RealType > &)
 
std::ostream & operator<< (std::ostream &os, const unit_exponential_distribution< RealType > &)
 
std::istream & operator>> (std::istream &is, unit_exponential_distribution &)
 

Detailed Description

template<typename RealType = double>
class exrandom::unit_exponential_distribution< RealType >

Sample exactly from the unit exponential distribution.

This samples from the unit exponential distribution P(x) = exp(−x) for x > 0. This is a replacement for std::exponential_distribution (with no parameters). It is equivalent to sampling a real number exactly from the distribution and rounding it to a floating point number. This implements Algorithm V.

Template Parameters
RealTypethe floating point type of the resulting deviates. This can include various multi-precision floating point types; see u_rand::value of details.

This is a wrapper for unit_exponential_dist to turn it into a C++11 style random distribution. If the radix of RealType is 2 (the usual case), then the base for unit_exponential_dist is set to 232; otherwise (e.g., RealType is a decimal system), the base is set to the radix.

Examples
chisq_test.cpp, compare_times.cpp, exrandom_test.cpp, sample_distributions.cpp, and simple_exponential.cpp.

Definition at line 40 of file unit_exponential_distribution.hpp.

Member Typedef Documentation

◆ result_type

template<typename RealType = double>
typedef RealType exrandom::unit_exponential_distribution< RealType >::result_type

The type of the range of the distribution.

Definition at line 45 of file unit_exponential_distribution.hpp.

Constructor & Destructor Documentation

◆ unit_exponential_distribution() [1/2]

template<typename RealType = double>
exrandom::unit_exponential_distribution< RealType >::unit_exponential_distribution ( )
inlineexplicit

Constructs an exponential distribution.

Definition at line 62 of file unit_exponential_distribution.hpp.

◆ unit_exponential_distribution() [2/2]

template<typename RealType = double>
exrandom::unit_exponential_distribution< RealType >::unit_exponential_distribution ( const param_type )
inlineexplicit

Constructs an exponential distribution with a parameter.

The parameter is ignored because it has no state.

Definition at line 70 of file unit_exponential_distribution.hpp.

Member Function Documentation

◆ reset()

template<typename RealType = double>
void exrandom::unit_exponential_distribution< RealType >::reset ( )
inline

Resets the distribution state.

Definition at line 76 of file unit_exponential_distribution.hpp.

◆ param() [1/2]

template<typename RealType = double>
param_type exrandom::unit_exponential_distribution< RealType >::param ( ) const
inline
Returns
the parameter set of the distribution.

Definition at line 81 of file unit_exponential_distribution.hpp.

◆ param() [2/2]

template<typename RealType = double>
void exrandom::unit_exponential_distribution< RealType >::param ( const param_type )
inline

Sets the parameter set of the distribution.

The function does not because a param_type has no state.

Definition at line 88 of file unit_exponential_distribution.hpp.

◆ min()

template<typename RealType = double>
result_type exrandom::unit_exponential_distribution< RealType >::min ( ) const
inline
Returns
the greatest lower bound value of the distribution.

Definition at line 93 of file unit_exponential_distribution.hpp.

◆ max()

template<typename RealType = double>
result_type exrandom::unit_exponential_distribution< RealType >::max ( ) const
inline
Returns
the least upper bound value of the distribution.

Definition at line 98 of file unit_exponential_distribution.hpp.

◆ operator()() [1/2]

template<typename RealType = double>
template<typename Generator >
result_type exrandom::unit_exponential_distribution< RealType >::operator() ( Generator &  g)
inline
Template Parameters
Generatorthe type of g.
Parameters
gthe random generator engine.
Returns
an exponential exponential deviate.

Definition at line 107 of file unit_exponential_distribution.hpp.

◆ operator()() [2/2]

template<typename RealType = double>
template<typename Generator >
result_type exrandom::unit_exponential_distribution< RealType >::operator() ( Generator &  g,
const param_type  
)
inline
Template Parameters
Generatorthe type of g.
Parameters
gthe random generator engine.
Returns
an exponential exponential deviate.

Definition at line 117 of file unit_exponential_distribution.hpp.

Friends And Related Function Documentation

◆ operator==

template<typename RealType = double>
bool operator== ( const unit_exponential_distribution< RealType > &  ,
const unit_exponential_distribution< RealType > &   
)
friend

Compare two unit_exponential_distributions.

Returns
true.

Definition at line 125 of file unit_exponential_distribution.hpp.

◆ operator!=

template<typename RealType = double>
bool operator!= ( const unit_exponential_distribution< RealType > &  ,
const unit_exponential_distribution< RealType > &   
)
friend

Contrast two unit_exponential_distributions.

Returns
false.

Definition at line 134 of file unit_exponential_distribution.hpp.

◆ operator<<

template<typename RealType = double>
std::ostream& operator<< ( std::ostream &  os,
const unit_exponential_distribution< RealType > &   
)
friend

Inserts a unit_exponential_distribution random number distribution into the output stream os.

Parameters
osan output stream.
Returns
os.

This function does nothing because this distribution has no state.

Definition at line 148 of file unit_exponential_distribution.hpp.

◆ operator>>

template<typename RealType = double>
std::istream& operator>> ( std::istream &  is,
unit_exponential_distribution< RealType > &   
)
friend

Extracts a unit_exponential_distribution random number distribution from the input stream is.

Parameters
isan input stream.
Returns
is.

This function does nothing because this distribution has no state.

Definition at line 162 of file unit_exponential_distribution.hpp.


The documentation for this class was generated from the following file: