level 1
#include <ctime>
#include <stdlib.h>
#include <cmath>
using namespace std;
double gauss(double mean,double sigma)
{
double ymin=mean-4*sigma, ymax=mean+4*sigma;
double pymax=1/sqrt(2*3.1415926)/sigma;
double y=ymin+1.0*(ymax-ymin)*rand()/(RAND_MAX);
double py=pymax*exp(-(y-mean)*(y-mean)/2.0/sigma/sigma);
double x=pymax*1.0*rand()/(RAND_MAX);
{if (x>py) return gauss(mean, sigma);
else return y;}
}
int main()
{
double a,b;
cout<<"请输入高斯分布的mean和sigma"<<endl;
cin>>a>>b;
cout<<"请输入要多少个数"<<endl;
int n;
cin>>n;
srand(time(0));
for(int i=0; i<n; i++)
{
double c=gauss(a,b);
cout<<c<<endl;
}
return 0;
}
此程序的结果并不服从高斯分布
请各位帮忙看看,这个程序问题到底出在哪儿????
PS 请吧主勿删,俺真的想了解算法的问题。。。
2011年05月09日 10点05分