c++近似计算概率

来源:互联网 发布:飞驰网络加速器 编辑:程序博客网 时间:2024/06/11 21:06
计算正态分布点落在心形函数(x^2+y^2-1)^2=x^2*y^2内的概率
double lfunc(double x, double y){    double res;    res = (x*x + y*y - 1);    return res;}double rfunc(double x, double y){    double res;    res = x*y;    return res;}double prob(double u1, double s1, double u2, double s2){    int SAMPLE_NUMBER = 100000;    vector<double> x;    vector<double> y;    random_device rd;    mt19937 gen(rd());    normal_distribution<double> distribution1(u1, s1);    normal_distribution<double> distribution2(u2, s2);    for (int i = 0; i < SAMPLE_NUMBER; i++)    {        x.push_back(distribution1(gen));        y.push_back(distribution2(gen));    }    int count1 = 0;    int count2 = 0;    for (int i = 0; i < SAMPLE_NUMBER; i++)    {        if ((x[i]>0)&&(-lfunc(x[i], y[i]) > rfunc(x[i], y[i])))            count1++;        if ((x[i] < 0) && (lfunc(x[i], y[i]) < -rfunc(x[i], y[i])))            count2++;    }    return (double(count1+count2) / double(SAMPLE_NUMBER));}

                                             
0 0
原创粉丝点击