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) |
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.
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.
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.
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.
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).
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.
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.
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.
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.
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.
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.
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.
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).
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.
a | the "scale" parameter, a>0 | |
b | the "shape" parameter, b>0 | |
rng | the underlying random number generator |