Uniform Distribution
- congruential method :
-
we should choose a, c, m carefully. e.g., $a = 25214903917, c = 11, m = 2^{48}$
-
Uniformly distributed numbers on [0,1] can be obtained by : $u_i= {x_i \over {m-1} }, i=1,2,…,n$
-
Uniformly distributed numbers on [a,b] can be obtained by : $u_i=a+ {x_i \over {m-1} } {(b-a)}, i=1,2,…,n $
Bernoulli Distribution
- Generate
u
fromuniform(0,1)
, ifu < p
, then return 1, else return 0.
Binomial Distribution
- Generate $y_1,y_2,…,y_n$ from bernoulli distribution, return $y_1+y_2+…+y_n$.
Cauchy Distribution $C(\alpha,\beta)$
- Generate
u
fromuniform(0,1)
,return $x={ \alpha- {\beta \over tan(\pi u)}}$
Empirical Distribution
- Generate
u
fromuniform(0,1)
, leti
be the integer part of $(n-1)u + 1$, return $a_i + [(n-1)u-i+1]{(a_{i+1}-a_i)}$
Exponential Distribution
- Generate
u
fromuniform(0,1)
, return $-\beta ln(u)$
Erlang Distribution $ER(k,\beta)$
- Generate $y_1,y_2,…,y_k$ from exponential distribution $exp{(\beta \over k)}$, return $y_1 + y_2 +… +y_k$
Gamma Distribution $G(\alpha,\beta)$
$x=0$
$repeat:$
$\quad generate \; v \; from \; exp(1)$
$\quad x=x+v$
$\quad \alpha=\alpha-1 $
until $\alpha=1$
return $\beta x$
Beta Distribution
- Generate $y_1$ from gamma distribution $G(\alpha,1)$
- Generate $y_2$ from gamma distribution $G(\beta,1)$
- $x= {y_1 \over {y_1 + y_2}}$
- return x
Weibull Distribution $W(\alpha,\beta)$
- Generate v from $exp(1)$
- return $x={\beta v^{1 \over \alpha}}$
Geometric Distribution GE(p)
- Generate
u
fromuniform(0,1)
- return the integer part of $ln(u) \over ln{(1-p)}$
Negative Binomial Distribution $NB(k,p)$
- Generate $y_1,y_2,…,y_k$ from geometric distribution
GE(p)
- return $y_1+y_2+…+y_k$
Logistic Distribution $L(a,b)$
- Generate
u
fromuniform(0,1)
- return $ a-{bln({1 \over u}-1)} $
Normal Distribution $N(u,\sigma)$
- Generate $u_1$ from
uniform(0,1)
- Generate $u_2$ from
uniform(0,1)
- $z=[-2ln(u_1)]^{1 \over 2} sin(2\pi u_2)$
- return $u+\sigma z$
Chi-Square Distribution
- Generate $z_i, i=1,2,…,k$ from $Normal(0,1)$
- return $z_1^2+z_2^2+…+z_k^2$
F Distribution $F(k_1,k_2)$
- Generate $y_1$ from chi-square distribution $Chi(k_1)$
- Generate $y_2$ from chi-square distribution $Chi(k_2)$
- return $y1 / k1 \over y2/k2$
Student Distribution $S(k)$
- Generate z from $N(0,1)$
- Generate y from $Chi(k)$
- return $z \over {\sqrt {y/k}}$
Lognormal Distribution $LogN(u,\sigma^2)$
- Generate z from $N(0,1)$
- $x=u+\sigma z$
- return $exp(x)$
Multinormal Distribution $N(u,\Sigma)$
- Generate an upper triangular matrix C such that $\Sigma=CC’$
- Generate $u_1,u_2,…,u_n$ from $N(0,1)$
- $x_k=u_k+ \sum_{i=1}^k c_{ki}u_i , (k=1,2,…,n)$
- return $x=(x_1,x_2,…x_n)$
Triangular Distribution T(a,b,m)
- $c={(m-a)} \over {(b-a)}$
- Generate u from $uniform(0,1)$
- If $u < c$, then $y=\sqrt {cu}$
- else, $y=1-{\sqrt {(1-c)(1-u)}}$
- return $a+(b-a)y$
Poisson distribution $P(\lambda)$
x=0
b=1
mark
generate u from $uniform(0,1)$
b=bu
if $b > e^\lambda$, then $x=x+1$ and gotomark
return x.