Continuous distributions
[Random number generation]

Functions

SIM_API double uniform (double a, double b, int rng=0)
SimTime uniform (SimTime a, SimTime b, int rng=0)
SIM_API double exponential (double mean, int rng=0)
SimTime exponential (SimTime mean, int rng=0)
SIM_API double normal (double mean, double stddev, int rng=0)
SimTime normal (SimTime mean, SimTime stddev, int rng=0)
SIM_API double truncnormal (double mean, double stddev, int rng=0)
SimTime truncnormal (SimTime mean, SimTime stddev, int rng=0)
SIM_API double gamma_d (double alpha, double theta, int rng=0)
SIM_API double beta (double alpha1, double alpha2, int rng=0)
SIM_API double erlang_k (unsigned int k, double mean, int rng=0)
SIM_API double chi_square (unsigned int k, int rng=0)
SIM_API double student_t (unsigned int i, int rng=0)
SIM_API double cauchy (double a, double b, int rng=0)
SIM_API double triang (double a, double b, double c, int rng=0)
double lognormal (double m, double w, int rng=0)
SIM_API double weibull (double a, double b, int rng=0)
SIM_API double pareto_shifted (double a, double b, double c, int rng=0)

Function Documentation

SIM_API double beta ( double  alpha1,
double  alpha2,
int  rng = 0 
)

Returns a random variate from the beta distribution with parameters alpha1, alpha2.

Generation is using relationship to Gamma distribution: if Y1 has gamma distribution with alpha=alpha1 and beta=1 and Y2 has gamma distribution with alpha=alpha2 and beta=2, then Y = Y1/(Y1+Y2) has beta distribution with parameters alpha1 and alpha2.

Parameters:
alpha1,alpha2 >0
rng the underlying random number generator
SIM_API double cauchy ( double  a,
double  b,
int  rng = 0 
)

Returns a random variate from the Cauchy distribution (also called Lorentzian distribution) with parameters a,b where b>0.

This is a continuous distribution describing resonance behavior. It also describes the distribution of horizontal distances at which a line segment tilted at a random angle cuts the x-axis.

Generation uses inverse transform.

Parameters:
a 
b b>0
rng the underlying random number generator
SIM_API double chi_square ( unsigned int  k,
int  rng = 0 
)

Returns a random variate from the chi-square distribution with k degrees of freedom.

The chi-square distribution arises in statistics. If Yi are k independent random variates from the normal distribution with unit variance, then the sum-of-squares (sum(Yi^2)) has a chi-square distribution with k degrees of freedom.

The expected value of this distribution is k. Chi_square with parameter k is gamma-distributed with alpha=k/2, beta=2.

Generation is using relationship to gamma distribution.

Parameters:
k degrees of freedom, k>0
rng the underlying random number generator
SIM_API double erlang_k ( unsigned int  k,
double  mean,
int  rng = 0 
)

Returns a random variate from the Erlang distribution with k phases and mean mean.

This is the sum of k mutually independent random variables, each with exponential distribution. Thus, the kth arrival time in the Poisson process follows the Erlang distribution.

Erlang with parameters m and k is gamma-distributed with alpha=k and beta=m/k.

Generation makes use of the fact that exponential distributions sum up to Erlang.

Parameters:
k number of phases, k>0
mean >0
rng the underlying random number generator
SIM_API double exponential ( double  mean,
int  rng = 0 
)

Returns a random variate from the exponential distribution with the given mean (that is, with parameter lambda=1/mean).

Parameters:
mean mean value
rng the underlying random number generator

Referenced by exponential().

SIM_API double gamma_d ( double  alpha,
double  theta,
int  rng = 0 
)

Returns a random variate from the gamma distribution with parameters alpha>0, theta>0.

Alpha is known as the "shape" parameter, and theta as the "scale" parameter.

Some sources in the literature use the inverse scale parameter beta = 1 / theta, called the "rate" parameter. Various other notations can be found in the literature; our usage of (alpha,theta) is consistent with Wikipedia and Mathematica (Wolfram Research).

Gamma is the generalization of the Erlang distribution for non-integer k values, which becomes the alpha parameter. The chi-square distribution is a special case of the gamma distribution.

For alpha=1, Gamma becomes the exponential distribution with mean=theta.

The mean of this distribution is alpha*theta, and variance is alpha*theta2.

Generation: if alpha=1, it is generated as exponential(theta).

For alpha>1, we make use of the acceptance-rejection method in "A Simple Method for Generating Gamma Variables", George Marsaglia and Wai Wan Tsang, ACM Transactions on Mathematical Software, Vol. 26, No. 3, September 2000.

The alpha<1 case makes use of the alpha>1 algorithm, as suggested by the above paper.

Remarks:
the name gamma_d is chosen to avoid ambiguity with a function of the same name
Parameters:
alpha >0 the "shape" parameter
theta >0 the "scale" parameter
rng the underlying random number generator
double lognormal ( double  m,
double  w,
int  rng = 0 
) [inline]

Returns a random variate from the lognormal distribution with "scale" parameter m and "shape" parameter w.

m and w correspond to the parameters of the underlying normal distribution (m: mean, w: standard deviation.)

Generation is using relationship to normal distribution.

Parameters:
m "scale" parameter, m>0
w "shape" parameter, w>0
rng the underlying random number generator

References normal().

SIM_API double normal ( double  mean,
double  stddev,
int  rng = 0 
)

Returns a random variate from the normal distribution with the given mean and standard deviation.

Parameters:
mean mean of the normal distribution
stddev standard deviation of the normal distribution
rng the underlying random number generator

Referenced by lognormal(), and normal().

SIM_API double pareto_shifted ( double  a,
double  b,
double  c,
int  rng = 0 
)

Returns a random variate from the shifted generalized Pareto distribution.

Generation uses inverse transform.

Parameters:
a,b the usual parameters for generalized Pareto
c shift parameter for left-shift
rng the underlying random number generator
SIM_API double student_t ( unsigned int  i,
int  rng = 0 
)

Returns a random variate from the student-t distribution with i degrees of freedom.

If Y1 has a normal distribution and Y2 has a chi-square distribution with k degrees of freedom then X = Y1 / sqrt(Y2/k) has a student-t distribution with k degrees of freedom.

Generation is using relationship to gamma and chi-square.

Parameters:
i degrees of freedom, i>0
rng the underlying random number generator
SIM_API double triang ( double  a,
double  b,
double  c,
int  rng = 0 
)

Returns a random variate from the triangular distribution with parameters a <= b <= c.

Generation uses inverse transform.

Parameters:
a,b,c a <= b <= c
rng the underlying random number generator
SIM_API double truncnormal ( double  mean,
double  stddev,
int  rng = 0 
)

Normal distribution truncated to nonnegative values.

It is implemented with a loop that discards negative values until a nonnegative one comes. This means that the execution time is not bounded: a large negative mean with much smaller stddev is likely to result in a large number of iterations.

The mean and stddev parameters serve as parameters to the normal distribution before truncation. The actual random variate returned will have a different mean and standard deviation.

Parameters:
mean mean of the normal distribution
stddev standard deviation of the normal distribution
rng the underlying random number generator

Referenced by truncnormal().

SIM_API double uniform ( double  a,
double  b,
int  rng = 0 
)

Returns a random variate with uniform distribution in the range [a,b).

Parameters:
a,b the interval, a<b
rng the underlying random number generator

Referenced by uniform().

SIM_API double weibull ( double  a,
double  b,
int  rng = 0 
)

Returns a random variate from the Weibull distribution with parameters a, b > 0, where a is the "scale" parameter and b is the "shape" parameter.

Sometimes Weibull is given with alpha and beta parameters, then alpha=b and beta=a.

The Weibull distribution gives the distribution of lifetimes of objects. It was originally proposed to quantify fatigue data, but it is also used in reliability analysis of systems involving a "weakest link," e.g. in calculating a device's mean time to failure.

When b=1, Weibull(a,b) is exponential with mean a.

Generation uses inverse transform.

Parameters:
a the "scale" parameter, a>0
b the "shape" parameter, b>0
rng the underlying random number generator
Generated on Fri Mar 7 17:19:39 2014 for OMNeT++ Simulation Library by  doxygen 1.6.3