产生正态分布随机数

来源:互联网 发布:压缩文件夹 linux 编辑:程序博客网 时间:2024/06/06 01:22

正态分布也成高斯分布。其概率密度为

为了产生以上分布,主要利用中心极限定理。取12个服从[0,1]均匀分布的随机数求和即可得

即:

近似服从N(0,1) .

再经过变换


即可得到服从均值为,方差为的正态分布随机数y.

程序:

double gauss(double mean, double sigma, long int *s)
{
    int i;
    double x=0;
    double y=0;
    for(i=0; i<12; i++)
    {
        x+=uniform(0.0, 1.0, s);//前一篇中的均匀分布的产生函数
    }
    x=x-6.0;
    y=mean+sigma*x;
    return y;
    
}

void run_gauss(void)
{
    double a=0.0;
    double b=1.0;
    int j;
    long int seed=13579;
    double value;
    for(j=0; j<=100; j++)
    {
        value=gauss(a,b,&seed);
        printf("%.10f\r\n", value);
    }

}

运行结果:






0 0
原创粉丝点击