Форум успешных вебмастеров - GoFuckBiz.com

  Форум успешных вебмастеров - GoFuckBiz.com > Бизнес-решения > Скрипты, программы и технические решения
Дата
USD/RUB58.8410
BTC/USD0.0000
Скрипты, программы и технические решения Обсуждаем скрипты, программы и новые технологии.

Закрытая тема
Опции темы Опции просмотра
Старый 07.11.2007, 18:45   #1
medar
кодер-энтузиаст
 
Аватар для medar
 
Регистрация: 04.04.2007
Адрес: Джамайка
Сообщений: 3,410
Бабло: $447110
По умолчанию Математеки в зале есть ?

Необходимо перевести равномерное распределение в пуассоновское. Или оно не пуассоновское, я уже не помню, как оно должно называться.

Короче, есть равномерное распределение, которое мы получаем от php-функции rand(min, max). Все числа от min до max выпадают с одинаковой вероятностью. Мне же нужно, чтобы числа из начала ряда выпадали чаще, т.е. в ряду 1 ... 10 единица выпадала чаще всего, 2 - в n раз реже чем 1, 3 - в n раз реже чем 2 и т.п.

Мож кто-нить не совсем забыл чему нас учили в универах и институтах ? Подскажите функцию.
medar вне форума  
Старый 07.11.2007, 19:06   #2
kapitoshka
вьёб-мастер
 
Аватар для kapitoshka
 
Регистрация: 29.04.2007
Сообщений: 56
Бабло: $500
Отправить сообщение для kapitoshka с помощью ICQ
По умолчанию

тебе надо получить ряд типа
10 9 9 8 8 8 8 7 7 7 7 7 7 7 7 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 - я заебусь этот ряд дальше писать =), как вариант нагенерить такой ряд =), а потом случайно выбирать из него значения =).

Тут вышка не надо, просто подумать какая последовательность должны быть конечной и что с ней делать потом.
__________________
Инвайты на KlikVip, GlavMed - учу учиться.
kapitoshka вне форума  
Старый 07.11.2007, 19:08   #3
xoxlov
Юниор
 
Регистрация: 31.07.2007
Сообщений: 27
Бабло: $920
По умолчанию

Недавно вспоминал как это делается, написал функцию. На вход получает мат.ожидание $M на выходе случайное число распределенное по Пуасону с мат.ожиданием $M


PHP код:
//Для Закона пуасона мат.ожидание=дисперсии=$M
    
function PoissonRandomNumber($M)
    {
        
$RandomNumber=rand(0,2147483647)/2147483647;
        
$Sum=0;
        
$Factorial=1;
        for (
$k=0;$k<1000;$k++)
        {
            if (
$k>0)
            {
                
$Factorial=$Factorial*$k;
            }
            
$verk=(exp(-$M)*pow($M,$k))/$Factorial;
            
$Sum+=$verk;
            if (
$Sum>$RandomNumber)
            {
                return 
$k;
            }
        }
    } 
xoxlov вне форума  
Старый 07.11.2007, 23:10   #4
zlaya ssuka
ChefJavaProgrammierer
 
Аватар для zlaya ssuka
 
Регистрация: 05.04.2007
Сообщений: 1,166
Бабло: $15090
Отправить сообщение для zlaya ssuka с помощью ICQ
По умолчанию

В общем случае:
Пусть нам надо получить случайную величину X с функцией распределения F.
Тогда
1. Существует F- на отрезке [0,1] такая ,что F-(F(x)) = x (обратная функция)
2. F-(Y) = X ,где Y случайная величина с равномерным распределением на отрезке [0,1], X случайная величина с функцией распределения F
zlaya ssuka вне форума  
Старый 07.11.2007, 23:35   #5
medar
кодер-энтузиаст
 
Аватар для medar
 
Регистрация: 04.04.2007
Адрес: Джамайка
Сообщений: 3,410
Бабло: $447110
ТС -->
автор темы ТС По умолчанию

xoxlov, спасибо за код, примерно это и надо!
kapitoshka, очень элегантное решение, в принципе, одного его хватило бы
zlaya ssuka, прочел три раза, ничего не понял Видимо, это слишком общий случай
medar вне форума  
Старый 08.11.2007, 00:08   #6
zlaya ssuka
ChefJavaProgrammierer
 
Аватар для zlaya ssuka
 
Регистрация: 05.04.2007
Сообщений: 1,166
Бабло: $15090
Отправить сообщение для zlaya ssuka с помощью ICQ
По умолчанию

Цитата:
Сообщение от medar Посмотреть сообщение
xoxlov, спасибо за код, примерно это и надо!
kapitoshka, очень элегантное решение, в принципе, одного его хватило бы
zlaya ssuka, прочел три раза, ничего не понял Видимо, это слишком общий случай
для полковников.
есть у тебя X c функцией распределения F(х). например F(x) = arctg(x)/pi + 1/2

тогда берем y = rand(0, 1000000)/1000000
x = tg((y-1/2)*pi) <- обратная функция, F-

x - случайная величина с требуемым распределением F

если совсем плохо - функция распределения
zlaya ssuka вне форума  
Старый 08.11.2007, 00:54   #7
medar
кодер-энтузиаст
 
Аватар для medar
 
Регистрация: 04.04.2007
Адрес: Джамайка
Сообщений: 3,410
Бабло: $447110
ТС -->
автор темы ТС По умолчанию

Так понятнее.
Но проблема уже решена.
medar вне форума