一、功能
產生對數正態分布的隨機數。
二、方法簡介
對數正態分布的概率密度函數為
\[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文件參見正態分布的隨機數