![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Участник клуба
Регистрация: 14.06.2011
Сообщений: 1,138
|
![]() |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 02.03.2008
Сообщений: 2,504
|
![]()
То есть функция плотности должна быть определена в интервале (0;∞) ?
Например , X - равномерно распределенная величина на интервале (0;1). Если взять какую-нибудь функцию от X: y:=f(x) , то плотность распределения Y будет g(y) = |u'(y)| , где u(y) - функция, обратная f(x). Вот и подберите нужную f(x). А если не обязательно (0;∞) , то можно проще. Берете n равномерно распределенных чисел, упорядочиваете по возрастания, i-я по возрастанию величина будет иметь красивое горбатое распределение. Естественно, 1< i < n . Непонятно, на каком языке вам надо. Скачайте книгу " Вадзинский Р Н . Справочник по вероятностным распределениям ". Посмотрите главу " Непрерывные распределения, с возможными распределениями на положительной полуоси ". Выберите распределение, которое вам лучше подходит. Там для каждого распределения есть раздел " Генерация случайных величин " . Используются r - стандартно равномерно распределенные случайные величины. Стандартные значит Max = 0, Min = 1 Вот например: x = a*(-Ln(r))^(1/b) , Параметры a,b сами выбирайте любые, но a>0 , b > 1 Последний раз редактировалось Stilet; 21.07.2013 в 11:32. |
![]() |
![]() |
![]() |
#3 |
Участник клуба
Регистрация: 14.06.2011
Сообщений: 1,138
|
![]()
Спасибо, вот теперь понял!
Примерно, что берется "равномерно распределенная" величина, применяется формула, отчего изменяется "масштаб", т.е. при "уплотнении влево" отрезок слева будет соотнесен с большим отрезком "исходного распределения", а отрезок той же длины справа - с меньшим: 0(====)-----(====)1 :желаемое распределение -|---------\-----\------|- -|----------\------\----|- 0(======)------(==)1 :исходное распределение Потом вернувшийся из функции random умножаем на MaxRange, округляем до целого и получаем желаемое. Книжку почитаю. |
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 02.03.2008
Сообщений: 2,504
|
![]()
А зачем округляем до целого ?
Вам нужна дискретная что-ли случайная величина ? 1) Random без параметров возвращает равномерно распределенную величину (Max=0; Min = 1, то есть стандартную). Назовем ее r варианты: 2) Вычисляем y = a*(-Ln(r))^(1/b) Получаем случайную величину y, имеющюю распределение Вейбулла с параметрами a,b. или 2) Берем несколько таких r, например m штук. r1,r2, ...., rm Вычисляем y=-Ln(r1*r2*...*rm)/a Получаем случайную величину y, имеющюю распределение Эрланга (или гамма-распределение) с параметрами a,m. или ... Но эти формулы ( с логарифмами ) - это не есть функции плотности распределение (Вейбулла или Эрланга или другая какая с горбом, как у вас на графике). Между формулой плотности и формулой для преобразования не такая простая связь. Последний раз редактировалось type_Oleg; 20.07.2013 в 22:27. |
![]() |
![]() |
![]() |
#5 | ||
Участник клуба
Регистрация: 14.06.2011
Сообщений: 1,138
|
![]() Цитата:
К тому ж рандомовский интегер сам по себе дискретный. И на таком большом интервале дискретность, по большей части, уходит в догматы математической строгости. Цитата:
А можете на пальцах объяснить, как получить распределение не такое округлое, а тупо прямое? Лишь бы в одном месте почаще, а в других пореже рандом срабатывал. C возможностью задания углов наклона, максимального получаемого значения и минимального, т.е. minRange,maxRange,maxFrequency. Нечто типа этого: --|------------/x\----|----------------- МахFrequency --|----------/xxxx\--|----------- --|-------/xxxxxxxx\|----------- --|----/xxxxxxxxxxx|\---------- --|/xxxxxxxxxxxxxx|--\-------- -/|xxxxxxxxxxxxxxx|----\------ -minRange---------maxRange-- |
||
![]() |
![]() |
![]() |
#6 |
Старожил
Регистрация: 02.03.2008
Сообщений: 2,504
|
![]()
Только имейте ввиду, что должно соблюдаться условие нормировки.
Не всякая функция может быть функцией плотности для непрерывной СВ, и не всякий многоугольник может быть полигоном распределения для дискретной СВ. Щас подумаю, напишу как. PS Не понятно, МахFrequency по какой оси. На АЧХ похоже. Вот, например так. Последний раз редактировалось Stilet; 21.07.2013 в 11:33. |
![]() |
![]() |
![]() |
#7 |
Участник клуба
Регистрация: 14.06.2011
Сообщений: 1,138
|
![]()
Ага, значит через площадь все считается.
У меня мелькала мысль, чтобы разбить фигуру на квадратики, их пронумеровать и уже по рандому случайно выбирать номер квадратика. Тока реализация через switch() {case1: ... case 20000000:} - адова пытка) Применил Вашу формулу, переделал рандом с ограниченного и половинчатого шорта на гигантский, с ничтожной дискретностью, дабл и... Код:
0 - 327 1 - 1023 2 - 1734 3 - 2502360 4 - 3020 5 - 3611 6 - 4380 7 - 5047 8 - 5646 9 - 6284 ..... ..... ..... 147 - 98509 148 - 99060 149 - 99584 150 - 0 151 - 0 152 - 0 ...... "что я делаю не так?"© больше 149 - не срабатывает. На тройку выпадает черте что. |
![]() |
![]() |
![]() |
#8 |
Старожил
Регистрация: 02.03.2008
Сообщений: 2,504
|
![]()
Я в C++ не понимаю. Могу на Delphi показать фрагмент. Проверял, работает
Код:
Кстати, вот я подумал про C возможностью задания углов наклона... Наверное, не получистся. Углы зависят от масштабов по осям координат. Если сделать правильный масштаб, то есть выполнить условие нормировки, то надо сплюснуть этот треугольник в 1500 раз, чтобы его площадь была = 1. Соответственно углы изменятся. Условие нормировки F(∞) = 1 |
![]() |
![]() |
![]() |
#9 | |
Участник клуба
Регистрация: 14.06.2011
Сообщений: 1,138
|
![]()
Вы совершенно во всем правы и все работает как надо, а виновата моя невнимательность:
outX = (200 - (sqrt(3600 - 0.6*(4500+ x )))/0,3); там в 0,3 стоит запятая... Цитата:
Впрочем, это уже детали реализации. Огромное спасибо за помощь! |
|
![]() |
![]() |
![]() |
#10 | |
Старожил
Регистрация: 02.03.2008
Сообщений: 2,504
|
![]() Цитата:
Например, берем плотность распределения роста людей. По оси X - рост x(в м или см или футах, ...) По оси Y - плотность вероятности f(в 1/м или 1/см или 1/ф соответственно). Условие нормировки F(∞) = 1 то есть площадь фигуры, ограниченной графиком f(x). Размерность площади м*1/м = см*1/см = ф*1/ф = .. = 1 , то есть безразмерная . Так как это есть вероятность P(-∞<x<∞)=1. Вероятность - безразмерная. |
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
РАНДОМ | kilogram | PHP | 3 | 12.05.2012 14:24 |
Рандом | Ya_Aston | Помощь студентам | 4 | 17.12.2010 22:43 |
Рандом | mansp | Общие вопросы C/C++ | 1 | 12.12.2010 15:18 |
Рандом | Syltan | JavaScript, Ajax | 0 | 07.05.2010 01:40 |
Нелинейный алгоритм (Pascal) | DsDevis | Помощь студентам | 7 | 23.03.2009 11:48 |