Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.022 c
1-1128876024
oleg_SYS
2005-10-09 20:40
2005.10.30
Помогите создать COM-объект


14-1128825298
dr Tr0jan
2005-10-09 06:34
2005.10.30
Как бороться с божьими коровками


1-1128681705
LordOfRock
2005-10-07 14:41
2005.10.30
Программа в ХР-шном стиле


2-1128852254
ArtemESC
2005-10-09 14:04
2005.10.30
Отладка


8-1117874787
wardoc
2005-06-04 12:46
2005.10.30
Как нарисовать эллипс под произвольным углом




   Наверх