#алгоритм #java
Здравствуйте! Был у меня здесь недавно вопрос, пошел я по пути формирования нового значения, базирующемся на распределении вероятности. Спасибо большое @neofit ! Получилась интересная картина, очень напоминающая лонормальное распределение: распределение http://upload.dexstudio.com.ua/botva2.jpg Теперь, собственно, вопрос, как генерировать число из этого распределения? Есть готовые решения, например, для Java, которые способны принимать данное распределение и выдавать значение где-то среди этой красоты?
Ответы
Ответ 1
Пример: Вам нужно чтобы событие 1 произошло с шансом 75%, событие 2 с шансом 10%, событие 3 с шансом 15%. Генерируете случайное число от 0 до 99. Если число в интервале 0-74, то событие 1, 75-84 событие 2, 85-99 событие 3. В Вашем вопросе все тоже самое. Сумма длин всех полосок- это число 99 в примере. Длина каждой полоски задает интервал попадания.Ответ 2
Делаем так: Если мы считаем, что наш набор экспериментальных значений похож на логнормальное распределение, то берем функцию аппроксимирующую логнормальное распределение - например эту (по сути гаусс с логарифмами) Далее методом наименьших квадратов, находим 2 параметра логнормального распределения (в классике сигма задает "толщину", а мю - задает положение экстремума) Далее спокойно подставляем в полученную функцию значения и генератор готов.
Комментариев нет:
Отправить комментарий