Форум: "Основная";
Текущий архив: 2005.10.30;
Скачать: [xml.tar.bz2];
Внизкак сделать рандом с уклоном? Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.046 c