我的家庭作业我要生成一组数字到一个固定点,允许的意思是0和标准差为1.我一直主要处理一个双打数组来尝试这个,但是我不知道如何完成这一点。如何随机生成一个平均值为0,标准偏差为1的双精度数组?
为了产生值,我已经使用盒穆勒方法尝试,但我仍然从平均值= 1和SD = 1的标志结束与一个均值和标准偏差这就是仍然关闭标准正态分布
更新:好的,我刚刚意识到我的错误。对于box muller,我打错了2代替3。现在解决了这个问题。
//Create Standard Normal Distribution
void std_find(double a[],double s[], int pop, int samp){//
//generate random numbers for std normal
double *p;
p = a;
//generate numbers in standard normal
double numA = 0;
double numB = 0;
double PI = 3.14159;
//Box_Muller
for(int i = 0; i < pop; i= i+2){
numA = (rand() * 1)/(double)32767;
numB = (rand() * 1)/(double)32767;
*p = sqrt((double)-3 * (log(numB))) * cos((double)3* PI*numA);
p++;
*p = sqrt((double)-3 * (log(numB))) * sin((double)3 *PI*numA);
p++;
}
double popMean = mean(a,(double)pop);
//double popMean = (double)0;
double popSD = sqrt(sampleV(a,pop));
//double popSD = (double)1;
cout << "\nPopulation Mean of the std: " << popMean;
cout << "\nPopulation Standard deviance of std: " << popSD;
//population created, now to create sample
sample(a,s,samp,popMean,popSD);
}
重要的是给定的结果集满足这些标准(在这种情况下,最后的数字不是随机的),或者生成器应该为无限数量的值做? – 2011-02-11 10:29:57