您的位置:首页 > 其它

正态分布函数实现

2014-03-04 10:33 120 查看
//产生(min,max)之间均匀分布的随机数

double AverageRandom(double min,double max)                        

{

    int MINnteger = (int)(min*10000);

    int MAXnteger = (int)(max*10000);

    int randInteger = rand()*rand();

    int diffInteger = MAXnteger - MINnteger;

    int resultInteger = randInteger % diffInteger + MINnteger;

    return resultInteger/10000.0;

}

//正态分布概率密度函数

double Normal(double x,double miu,double sigma)                        

{

    return 1.0/(sqrt(2*3.14)*sigma) * exp(-1*(x-miu)*(x-miu)/(2*sigma*sigma));

}

//产生正态分布随机数

double Random_Normal(double miu,double sigma,double min,double max)    

{

    double x;

    double dScope;

    double y;

    do

    {

        x = AverageRandom(min,max);

        y = Normal(x, miu, sigma);

        dScope = AverageRandom(0, Normal(miu,miu,sigma));

    }while( dScope > y);

    return x;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: