Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




На страницу Пред.  1, 2
 
Стандартный алгоритм таков. Берём два равномерно распределённых случайных числа: $x\in(-\pi;\pi)$ и $y\in(0;2)$. Число $x$ принимается в качестве очередного, если $y<1+\cos(x)$, в противном случае отвергается. Эффективность весьма высокая -- в среднем будет приниматься каждое второе число. Точность абсолютна (в пределах качества равномерного генератора, разумеется).

 
Аватара пользователя
Объясните мне, пожалуйста, насчет множителя $\frac {1}{2\pi}$. Он не обязателен здесь? Ведь функция распределения должна быть равна 1 в точке $\pi$? В Монте-Карло понятно, всё сокращается. Вообще изначально для закона распределения?

 
Не обязателен -- нормировка произойдёт автоматически. Функция распределения в явном виде здесь вообще не участвует.

Метод вполне универсален и общепринят. Например, так можно эффективно генерировать синусы и косинусы случайных углов (что практически важно), причём не используя самих синусов и косинусов -- только немножко арифметических операций.

 
График.
Изображение

 
Да, я в общем-то решила задачу именно описанным выше способом. Когда поднимала тему еще не догадалась... Результаты получила удовлетворительные, но время вычислений конечно капитально увеличилось, но по всей видимости эту проблему просто не решить.

 
MarinaV в сообщении #185650 писал(а):
, но время вычислений конечно капитально увеличилось

коль скоро все счастливы, то вопрос вроде и празден, и всё же откровенная загадка: по сравнению с чем увеличилось? (и, кстати, какой метод?)

 
Имелось в виду по сравнению с моделированием иных распределений, для которых сучествует обратная функция к функции интегрального распределения...

 
ну, поскольку я зануда, то я вот и занудствую.

Подсчитайте к-во операций, требуемое для вычисления обратной функции (а поди её исчо посчитай) -- и для "случайного" метода

 
Спасибо большое, ewert, за Ваше занудство... В виду своей невнимательности :oops: , я использовала отличный от предложенного Вами метода (с лишним вложенным циклом).
Испробывала Ваш - понравилось! Все отлично, быстро и точно!
Пасиба!!! :D

 
ну, положим, не из тысячи, а из сотни -- но, в принципе, верно. А если интервал значений случайной величины бесконечен, то метод и вообще не будет работать в оригинальном виде. Но его запросто можно подкорректировать, и это -- тоже стандартная идея. Надо попросту сделать подходящую замену переменной (типа $Y={1\over X+1$), после которой область значений станет ограниченной.

 
Аватара пользователя
Прошу прощения - я в панике удалил своё предыдущее сообщение, в котором написал, что доля принимаемых значений будет равна отношению площади под кривой плотности распределения к площади прямоугольника, ограничивающего график.

В случае очень маленькой дисперсии при достаточно большом интервале значений СВ, невысокая доля принимаемых значений может повлиять на выбор метода.

Я имею в виду, что если время вычисления функции плотности сравнимо с таковым для функции, обратной к функции распределения, то при большом числе требуемых значений...
Впрочем, это всё банальные вещи и написаны более ради написания :)

 [ Сообщений: 26 ]  На страницу Пред.  1, 2


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group