мне удалось получить рабочую нормальное распределение в моей основной функции(), используя следующий код:Как создать произвольное нормальное распределение C++, которое работает в отдельном методе?
default_random_engine generator(time(0));
normal_distribution<double> distribution(6.0,5.0);
for (int i = 0; i < 51; i++)
{
cout << "#" << i << "= " << distribution(generator);
}
Это будет счастливо распечатать 50 значений, которые следуют за распределением со средним значением 6,0 и в среднем 5,0, например:
#0= 0.999998
#1= 3.43872
#2= 6.83918
#3= -3.81324
#4= 16.0962
#5= 1.26236
Однако, как только я перехожу один и тот же код в метод и вызов указанного способа вернуть отдельные значения, которые населяют вывод, что только возвращает то же значение снова:
double normalGenerator(double mean, double stdDev)
{
default_random_engine generator(time(0));
normal_distribution<double> distribution(mean,stdDev);
return distribution(generator);
}
(в главном()):
for (int i = 0; i < 51; i++)
{
cout << "#" << i << "= " << distribution(generator);
cout << " " << normalGenerator(6.0,5.0) << endl;
}
Выход:
#0= 5.49136 5.49136
#1= 7.6902 5.49136
#2= 14.4971 5.49136
#3= 11.946 5.49136
#4= 4.37424 5.49136
#5= 9.91711 5.49136
Первый столбец имеет исходный код, второй метод называемого значение.
Я предполагаю, что мой вопрос основан на линиях с
default_random_engine generator(time(0));
normal_distribution<double> distribution(6.0,5.0);
находящихся в методе, но мое понимание того, как они работают, не велико и я не нашел хорошую документацию начинающего уровня, чтобы помочь Я понимаю это.
Посев в петле - очень распространенная ошибка. – LogicStuff