реклама на сайте
подробности

 
 
> Синтез гауссовского шума, Эффективный алгоритм синтеза псевдослучайной последовательности с норм
Pathfinder
сообщение Apr 24 2006, 14:16
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 275
Регистрация: 29-06-05
Пользователь №: 6 400



Кто-нибудь знает где взять эффективный алгоритм синтеза гауссовского шума в целочисленной арифметике? решение в лоб (2 рекуррентные последовательности максимальной длины+нелин. преобразования) требует вычисления функции sqrt(-ln(1-x)), а считается она очень медленно - для получения 16-битного корня требуется 16 операций деленья, и еще одна для вычисления логарифма. Может есть какие-то быстрые итеративные алгоритмы? Сразу уточню, период последовательности должен быть очень большим.


--------------------
ADC / DAC LC Filter Designer — Удобный инструмент проектирования LC-фильтров для ЦАП и АЦП
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
SavSerG
сообщение Apr 24 2006, 16:10
Сообщение #2





Группа: Новичок
Сообщений: 11
Регистрация: 25-07-05
Пользователь №: 7 070



Вот алгоритм на основе суммы 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 там были алгоритмы генерирования
гауссовского шума
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th August 2025 - 08:35
Рейтинг@Mail.ru


Страница сгенерированна за 0.01426 секунд с 7
ELECTRONIX ©2004-2016