Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.10.30;
Скачать: CL | DM;

Вниз

как сделать рандом с уклоном?   Найти похожие ветки 

 
Top ©   (2005-10-06 16:08) [0]

как сделать рандом с уклоном? чтобы например были числа от 1 до 40 но большие выпадали несколько реже.


 
evvcom ©   (2005-10-06 16:14) [1]

Например, создаешь массив из 70 элементов. Первые 60 заполняешь числами от 1 до 30 по 2 раза каждое, остальные от 31 до 40 по 1 разу. Делаешь random в диапазоне 1-70 (или 0-69) и из массива по этому индексу выбираешь значение. Таким образом числа от 31 до 40 будут выпадать несколько реже, чем 1-30. :) Получить можешь любое распределение.


 
MBo ©   (2005-10-06 16:15) [2]

>но большие выпадали несколько реже.
Насколько реже?
Т.е. какого вида должно быть распределение (плотность распределения)


 
Defunct ©   (2005-10-06 16:17) [3]

Top ©   (06.10.05 16:08)  

if Random( 9 ) < 8 then  // тут задаем вероятность выпадания большого числа
 Result := 1 + Random( 39 )
else
 Result := 1 + Random( 1000 )


 
Top ©   (2005-10-06 16:21) [4]

спасибо щас попробую предложенные решения


 
MBo ©   (2005-10-06 16:27) [5]

Квадратичное распределение:
Rnd:=1+Max(Random(40),Random(40));


 
Top ©   (2005-10-06 16:32) [6]


> MBo ©

отлично, это мне подходит :) спасибо


 
GuAV ©   (2005-10-06 16:50) [7]

Кстати, есть ли способ получить случайное число, зная плотность распределения ?


 
MBo ©   (2005-10-06 17:13) [8]

>GuAV ©   (06.10.05 16:50) [7]
Да, есть, преобразованием Смирнова (того, чей с Колмогоровым критерий в статистике известен)

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

Пример: нужно экспоненциальное распределение Exp(-x)
Интеграл -  -Exp(-x)
обратная функция -  -Ln(Y)
Значит, Rnd:=-Ln(Random); // где Random 0..1 (не включая границы)
даст экспоненциальное распределение (затухающее)


 
Jeer ©   (2005-10-06 18:48) [9]

MBo ©   (06.10.05 17:13) [8]

Так и называется "метод обратных функций"

Если не удается получить аналитическое выражение, то используются различного рода аппроксимации.
Бусленко Н.П. был разработан метод кусочно-линейной аппр.

Еще есть метод "отбора" - предложен  Дж.Нейманом.
Известен метод "суперпозиции" -  Butler J.W. (1956)
а также их комбинации.


 
GuAV ©   (2005-10-06 21:58) [10]

Ясно. Спасибо.



Страницы: 1 вся ветка

Текущий архив: 2005.10.30;
Скачать: CL | DM;

Наверх




Память: 0.46 MB
Время: 0.034 c
14-1129017796
pazitron_brain
2005-10-11 12:03
2005.10.30
Как сделать ICQ?


5-1105589926
farkhod
2005-01-13 07:18
2005.10.30
Компоненты TTextClient и TTextServer


3-1127348697
Дмитрий Белькевич
2005-09-22 04:24
2005.10.30
4th dimenstion


2-1128782315
ArtemESC
2005-10-08 18:38
2005.10.30
округление Extended.


4-1125069900
NikNet
2005-08-26 19:25
2005.10.30
Запустить EXE из ресурса не сохраняя на диск?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский