Вот алгоритм на основе суммы 20 равномерно распределенных чисел, нелинейное преобразование для того, чтобы "хвосты" распределения моделировались точнее. Уже при 12 числах нормальная гауссовская последовательность получается. При сумме 12 чисел не надо вычислять корень, т.к. он равен 1. long double gen() { long double x=0.0; for(int i=0;i<20;i++){ x+=(double(rand())/double(RAND_MAX)-0.5); }; x*=sqrtl(0.6); //sqrtl(12.0/N=20) x+=0.01*x*(x*x-3.0); return x; } Можно почитать книгу Numirical receipes on C там были алгоритмы генерирования гауссовского шума
|