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