一、功能
产生对数正态分布的随机数。
二、方法简介
对数正态分布的概率密度函数为
\[
f(x)=\left\{\begin{matrix}
\frac{1}{x\sqrt{2\pi }\sigma }exp\left ( - \frac{(lnx-\mu )^{2}}{2\sigma ^{2}} \right ) & x> 0\\
0 & x \leqslant 0
\end{matrix}\right.
\]
对数正态分布的均值为\(e^{\mu + \sigma ^{2} / 2}\),方差为\((e^{\sigma ^{2}}-1)e^{2\mu + \sigma ^{2}}\)。
首先产生正态分布的随机变量\(y\),然后通过变换\(x=e^{y}\),产生对数正态分布的随机变量\(x\),具体方法如下:
- 产生正态分布的随机数\(y\),即\(u \sim N(\mu , \sigma )\);
- 计算\(x=e^{y}\)。
三、使用说明
是用C语言实现产生对数正态分布分布随机数的方法如下:
/************************************ u ---对数正态分布的参数mu sigma ---对数正态分布的参数sigma s ---随机数种子 ************************************/ #include "math.h" #include "gauss.c" double lognorm(double u, double sigma, long int *s) { double x; double y; y = gauss(u, sigma, s); x = exp(y); return(x); }
gauss.c文件参见正态分布的随机数