我的家庭作業我要生成一組數字到一個固定點,允許的意思是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