一、功能
产生韦伯分布的随机数。
二、方法简介
韦伯分布的概率密度函数为
[f(x)=left{egin{matrix}
frac{alpha }{eta^{alpha } }x^{alpha -1}e^{-(frac{x}{eta })^{alpha }} & xgeqslant 0,a> 0,eta > 0\
0 & x< 0
end{matrix}
ight.
]
通常用(W(alpha ,eta ))表示,其分布函数为
[F(x)=left{egin{matrix}
1 - e^{-(frac{x}{eta })^{alpha }} & xgeqslant 0,a> 0,eta > 0\
0 & x< 0
end{matrix}
ight.
]
韦伯分布的均值为(frac{eta }{alpha }Gamma left ( frac{1}{alpha } ight ))。
用逆变换法,我们产生韦伯分布随机变量(x)的算法如下:
- 产生均匀分布的随机数(u),即(u sim U(0,1));
- 计算(x=eta (-ln(u))^{1/alpha });
三、使用说明
是用C语言实现产生韦伯分布随机数的方法如下:
/************************************
a ---韦伯分布参数apha
b ---韦伯分布参数beta
s ---随机数种子
************************************/
#include "math.h"
#include "uniform.c"
double weibull(double a, double b, long int *s)
{
double u;
double x;
u = uniform(0.0, 1.0, s);
u = -log(u);
x = b * pow(u, 1.0 / a);
return(x);
}
uniform.c文件参见均匀分布的随机数