ExRandom
3.0
|
Sample exactly from the unit normal distribution. More...
#include <exrandom/unit_normal_distribution.hpp>
Classes | |
struct | param_type |
Parameter type for unit_normal_distribution. More... | |
Public Types | |
typedef RealType | result_type |
Public Member Functions | |
unit_normal_distribution () | |
unit_normal_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_normal_distribution< RealType > &, const unit_normal_distribution< RealType > &) |
bool | operator!= (const unit_normal_distribution< RealType > &, const unit_normal_distribution< RealType > &) |
std::ostream & | operator<< (std::ostream &os, const unit_normal_distribution< RealType > &) |
std::istream & | operator>> (std::istream &is, unit_normal_distribution &) |
Related Functions | |
(Note that these are not member functions.) | |
#define | EXRANDOM_USE_KAHN |
Sample exactly from the unit normal distribution.
This samples from the unit normal distribution P(x) = exp(− x2/2) / √(2π). This is a replacement for std::normal_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 N with improvements due to Du et al. (2020).
RealType | the 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_normal_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_normal_dist is set to 232; otherwise (e.g., RealType is a decimal system), the base is set to the radix.
If the macro EXRANDOM_USE_KAHN is set to 1, then unit_normal_kahn is used instead (with the base set to the radix for RealType). Because this introduces a slight bias, this is not recommended.
RealType | the floating point type of the resulting deviates. |
Definition at line 61 of file unit_normal_distribution.hpp.
typedef RealType exrandom::unit_normal_distribution< RealType >::result_type |
The type of the range of the distribution.
Definition at line 66 of file unit_normal_distribution.hpp.
|
inlineexplicit |
Constructs a normal distribution.
Definition at line 82 of file unit_normal_distribution.hpp.
|
inlineexplicit |
Constructs a normal distribution with a parameter.
The parameter is ignored because it has no state.
Definition at line 90 of file unit_normal_distribution.hpp.
|
inline |
Resets the distribution state.
Definition at line 96 of file unit_normal_distribution.hpp.
|
inline |
Definition at line 101 of file unit_normal_distribution.hpp.
|
inline |
Sets the parameter set of the distribution.
The function does not because a param_type has no state.
Definition at line 108 of file unit_normal_distribution.hpp.
|
inline |
Definition at line 113 of file unit_normal_distribution.hpp.
|
inline |
Definition at line 119 of file unit_normal_distribution.hpp.
|
inline |
Generator | the type of g. |
g | the random generator engine. |
Definition at line 127 of file unit_normal_distribution.hpp.
|
inline |
Generator | the type of g. |
g | the random generator engine. |
Definition at line 136 of file unit_normal_distribution.hpp.
|
friend |
Compare two unit_normal_distributions.
Definition at line 144 of file unit_normal_distribution.hpp.
|
friend |
Contrast two unit_normal_distributions.
Definition at line 153 of file unit_normal_distribution.hpp.
|
friend |
Inserts a unit_normal_distribution random number distribution into the output stream os.
os | an output stream. |
This function does nothing because this distribution has no state.
Definition at line 167 of file unit_normal_distribution.hpp.
|
friend |
Extracts a unit_normal_distribution random number distribution from the input stream is.
is | an input stream. |
This function does nothing because this distribution has no state.
Definition at line 180 of file unit_normal_distribution.hpp.
|
related |
Should exrandom::unit_normal_distribution use exrandom::unit_normal_kahn instead of exrandom::unit_normal_dist as the underlying distribution. Because the output of exrandom::unit_normal_kahn is slightly biased, EXRANDOM_USE_KAHN should be set to 0.
Definition at line 21 of file unit_normal_distribution.hpp.