一、功能
產生指數分布的隨機數。
二、方法簡介
1、產生隨機變量的逆變換法
定理 設 \(F(x)\) 是任一連續的分布函數,如果 $ u \sim U(0, \ 1) $ 且 $ \eta \sim F(x) $。
證明 由於$ u \sim U(0, \ 1) $,則有
\[P(\eta \leqslant x)=P(F^{-1}(u)\leqslant x)=P(u\leqslant F(x))=F(x) \]
所以,\(\eta \sim F(x)\)。定理證畢。
此定理給出了從均勻分布隨機數到給定分布\(F(x)\)的隨機數的變換。根據該變換可產生分布函數為\(F(x)\)的隨機數\(x\),其算法可用下列兩個步驟實現:
- 產生均勻分布的隨機數\(u\),即\(u \sim U(0, \ 1)\);
- 計算\(x=F^{-1}(u)\)。
2、產生指數分布隨機數的方法
指數分布的概率密度函數為
\[f(x)=\left\{\begin{matrix} \frac{1}{ \beta } e^{-\frac{x}{ \beta }} & , x \geqslant 0\\ 0 & , others \end{matrix}\right. \]
其分布函數為
\[F(x)=\left\{\begin{matrix} 1- e^{-\frac{x}{ \beta }} & , x \geqslant 0\\ 0 & , others \end{matrix}\right. \]
指數分布的均值為 $ \beta $ ,方差為 $ \beta^{2} $ 。
根據上述的逆變換法,產生指數分布隨機數的方法為:
- 產生均勻分布的隨機數 $ u $ ,即 $ u \sim U(0, \ 1) $ ;
- 計算$ x= - \beta ln(u) $。
三、使用說明
指數分布隨機數使用C語言的生成方式如下:
#include "math.h"
#include "uniform.c"
double exponent(double beta, long int a)
{
double u;
double x;
u = uniform();
X = -beta * log(u);
return(x);
}
uniform.c文件參見均勻分布的隨機數。