Капитан Гугл
Искусственный Интеллект
(146261)
8 лет назад
1/2==0. Целочисленное деление же.
А вообще приводи минимальный воспроизводимый пример. Т. е. подставляй какие-то значения до вычислений и выводи после, чтобы можно было проверить твои выводы.
КлаусГуру (3263)
8 лет назад
Три дня думал в чем косяк, а проблема оказалась в такой мелочи...
Действительно заменил pow((-2)*log(array1[ij]),(1/2) на pow((-2)*log(array1[ij]),long double(0.5) и все заработало!
случайные величины "фи" и "r" взяты в диапозоне от 0 до 1 и распределены равномерно (эта часть генератора работает правильно)
Но вот в результате преобразования значения получаются наоборот, вместо одного центра тяжести в мат. ожидании там минимум, а максимум значений у среднеквадратичных отклонений
Вот кусок кода с преобразованием (array1 - это массив равномерно распределенных случайных величин)
array2[ij]=cos(2*PI*array1[ij+1])*pow((-2)*log(array1[ij]),(1/2));
array2[ij+1]=sin(2*PI*array1[ij+1])*pow((-2)*log(array1[ij]),(1/2));