для моего домашнего задания я должен сгенерировать набор чисел с фиксированной точкой, который позволяет среднему значению быть 0 и стандартному отклонению равным 1. Я в основном имел дело с массивом двойных чисел, чтобы попытаться это но я не уверен, как этого добиться.
Для генерации значений я попытался использовать метод Бокса-Мюллера, но у меня все равно получилось среднее и стандартное отклонение, которое все еще не соответствует отметке среднего = 1 и sd = 1 для стандартного нормального распределения
ОБНОВЛЕНИЕ: Хорошо, я только что понял свою ошибку. Для коробки Мюллера я набрал 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);
}