Документ взят из кэша поисковой машины. Адрес оригинального документа : http://wasp.phys.msu.ru/forum/index.php?showtopic=12937
Дата изменения: Unknown
Дата индексирования: Sun Apr 10 06:31:18 2016
Кодировка: Windows-1251
Помогите с распределением вероятности - Студенческий форум Физфака МГУ
IPB

Здравствуйте, гость ( Вход | Регистрация )

 
Reply to this topicStart new topic
Помогите с распределением вероятности, про генератор случайных чисел
Duplus
сообщение 8.12.2007, 17:42
Сообщение #1


уже не чужой
**

Группа: Участники
Сообщений: 25
Репутация: 1

Предупреждения:
(0%) -----


Подскажите, очень нужно.
У меня есть генератор случайных чисел, который выдает числа в интервале [0 1] с равномерным распределением. Точнее, у меня есть не сам генератор, а набор чисел, которые он выдает.
А мне нужен набор чисел, который подчиняется некоторому неравномерному распределению f(x). Как мне получить из набора равномерно распределенных чисел, другой набор с распределением f(x)?
Вроде бы должно быть не сложно, просто меня заклинило))) 194.gif
Go to the top of the page Вставить ник
+
peregoudov
сообщение 8.12.2007, 20:20
Сообщение #2


ломовая лошадь
*********

Группа: VIP
Сообщений: 937
Репутация: 50

Предупреждения:
(0%) -----


$f(x)$ --- это у Вас плотность вероятности? Тогда так. Пусть $F'(x)=f(x)$, $F(-\infty)=0$ --- функция распределения. Пусть $y$ --- Ваша равномерно распределенная случайная величина. Тогда величина $F^{-1}(y)$ будет распределена с плотностью $f(x)$. Понять это проще всего, нарисовав график $F(x)$.
Go to the top of the page Вставить ник
+
stash
сообщение 8.12.2007, 22:05
Сообщение #3


уважаемый
******

Группа: Профи
Сообщений: 127
Репутация: 0

Предупреждения:
(0%) -----


все это хорошо, когда можно просто вычислить обратную от функции распределения
если ее вычислить сложно, то можно сделать по-другому: кидать точку x в [a,b] , где нужны события, и принимать ее, только если другое (следующее) случайное число меньше f(x) (в предположении, что max f(x) = 1, иначе ее надо нормировать). эффективность может оказаться невелика, особенно, если есть пик, зато это просто сделать для любой f(x) (если, конечно, вы знаете, где она достигает максимального значения smile.gif
Go to the top of the page Вставить ник
+
SHiFT
сообщение 8.12.2007, 22:41
Сообщение #4


программист
**********

Группа: VIP
Сообщений: 1,008
Репутация: 106

Предупреждения:
(0%) -----


самый простой вариант -- численно посчитать функцию распределения, и построить таблицу ее значений, и, если вам известно, например, что она гладкая (т.е. что сл. величина не сингулярна) тогда по этой таблице строите какой-нибудь сплайн, и вот вам F^{-1}(x) -- но это на случай уж очень "нестандартных" распределений.

а так... общего решения на все случаи жизни не существует. большинство математических пакетов предлагают функции распределения из списка (нормальное, експоненциальное, логнормальное, стьюдента, хи-квадрат, бета, гамма, т.д.)-- для большинства задач этого хватает. все они реализованы в виде f(x), где - x - равномерно распределено на [0..1]

тема генерации случайных чисел раскрыта тут:
http://algolist.manual.ru/maths/generator/index.php

генерирование по большинству распределений тут:
http://algolist.manual.ru/maths/matstat/index.php








--------------------
То, что маленький компьютер может сделать, имея большую программу, большой компьютер сделает, имея малую, отсюда следует вывод, что бесконечно большая программа может действовать без всякого компьютера. ....каждое бесконечно длинное заклинание должно реализоваться.
ї С.Лем "Профессор А.Дронда"
.
Go to the top of the page Вставить ник
+
Duplus
сообщение 8.12.2007, 23:04
Сообщение #5


уже не чужой
**

Группа: Участники
Сообщений: 25
Репутация: 1

Предупреждения:
(0%) -----


спасибо всем огромное mr47_06.gif
Go to the top of the page Вставить ник
+

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

 



Текстовая версия Сейчас: 10.04.2016, 6:31