Помогите с распределением вероятности, про генератор случайных чисел |
Документ взят из кэша поисковой машины. Адрес
оригинального документа
: http://wasp.phys.msu.ru/forum/index.php?showtopic=12937
Дата изменения: Unknown Дата индексирования: Sun Apr 10 06:31:18 2016 Кодировка: Windows-1251 |
Здравствуйте, гость ( Вход | Регистрация )
Помогите с распределением вероятности, про генератор случайных чисел |
8.12.2007, 17:42
Сообщение
#1
|
|
уже не чужой Группа: Участники Сообщений: 25 Репутация: 1 Предупреждения: (0%) |
Подскажите, очень нужно.
У меня есть генератор случайных чисел, который выдает числа в интервале [0 1] с равномерным распределением. Точнее, у меня есть не сам генератор, а набор чисел, которые он выдает. А мне нужен набор чисел, который подчиняется некоторому неравномерному распределению f(x). Как мне получить из набора равномерно распределенных чисел, другой набор с распределением f(x)? Вроде бы должно быть не сложно, просто меня заклинило))) |
8.12.2007, 20:20
Сообщение
#2
|
|
ломовая лошадь Группа: VIP Сообщений: 937 Репутация: 50 Предупреждения: (0%) |
--- это у Вас плотность вероятности? Тогда так. Пусть , --- функция распределения. Пусть --- Ваша равномерно распределенная случайная величина. Тогда величина будет распределена с плотностью . Понять это проще всего, нарисовав график .
|
8.12.2007, 22:05
Сообщение
#3
|
|
уважаемый Группа: Профи Сообщений: 127 Репутация: 0 Предупреждения: (0%) |
все это хорошо, когда можно просто вычислить обратную от функции распределения
если ее вычислить сложно, то можно сделать по-другому: кидать точку x в [a,b] , где нужны события, и принимать ее, только если другое (следующее) случайное число меньше f(x) (в предположении, что max f(x) = 1, иначе ее надо нормировать). эффективность может оказаться невелика, особенно, если есть пик, зато это просто сделать для любой f(x) (если, конечно, вы знаете, где она достигает максимального значения |
8.12.2007, 22:41
Сообщение
#4
|
|
программист Группа: VIP Сообщений: 1,008 Репутация: 106 Предупреждения: (0%) |
самый простой вариант -- численно посчитать функцию распределения, и построить таблицу ее значений, и, если вам известно, например, что она гладкая (т.е. что сл. величина не сингулярна) тогда по этой таблице строите какой-нибудь сплайн, и вот вам -- но это на случай уж очень "нестандартных" распределений.
а так... общего решения на все случаи жизни не существует. большинство математических пакетов предлагают функции распределения из списка (нормальное, експоненциальное, логнормальное, стьюдента, хи-квадрат, бета, гамма, т.д.)-- для большинства задач этого хватает. все они реализованы в виде f(x), где - x - равномерно распределено на [0..1] тема генерации случайных чисел раскрыта тут: http://algolist.manual.ru/maths/generator/index.php генерирование по большинству распределений тут: http://algolist.manual.ru/maths/matstat/index.php -------------------- То, что маленький компьютер может сделать, имея большую программу, большой компьютер сделает, имея малую, отсюда следует вывод, что бесконечно большая программа может действовать без всякого компьютера. ....каждое бесконечно длинное заклинание должно реализоваться..ї С.Лем "Профессор А.Дронда" |
8.12.2007, 23:04
Сообщение
#5
|
|
уже не чужой Группа: Участники Сообщений: 25 Репутация: 1 Предупреждения: (0%) |
спасибо всем огромное
|
Текстовая версия | Сейчас: 10.04.2016, 6:31 |