一、功能
產生瑞利分布的隨機數。
二、方法簡介
瑞利分布的概率密度函數為
\[f(x) = \frac{x}{\sigma ^{2} }e^{-x^{2}/2\sigma ^{2}} \ x > 0 \]
瑞利分布的均值為\(\sigma \sqrt{\frac{\pi }{2}}\),方差為\(\left ( 2 - \frac{\pi }{2} \right )\sigma ^{2}\)。
首先用逆變換法產生參數\(\beta = 2\)的指數分布的隨機變量\(y\),其概率密度函數為\(f(y) = \frac{1}{2} e^{-\frac{y}{2}}\);然后通過變換\(x = \sigma \sqrt{y}\),產生瑞利分布的隨機變量\(x\),具體方法如下:
- 產生均勻分布的隨機數\(u\),即\(u \sim U(0,1)\);
- 計算\(y = - 2 \ ln(u)\);
- 計算\(x = \sigma \sqrt{y}\)。
三、使用說明
是用C語言實現產生瑞利分布隨機數的方法如下:
/************************************
sigma ---瑞利分布的參數sigma
seed ---隨機數種子
************************************/
#include "math.h"
#include "uniform.c"
double rayleigh(double sigma, long int *s)
{
u = uniform(0.0, 1.0, s);
x = -2.0 * log(u);
x = sigma * sqrt(x);
return(x);
}
uniform.c文件參見均勻分布的隨機數