LINUX.ORG.RU

получать случайные числа по имеющейся плотности

 ,


1

2

Предположим, имеется некое распределение плотности вероятности. Оно задано 1000 точками для числа, которое может меняться в диапазоне от -1 до 1. Как генерировать случайные числа так, чтобы в итоге они сложились именно как в этой заданной плотности вероятности (для самопроверки)? Понятное дело, что в рамках 1/1000 кусочка плотности вероятности можем считать распределение равномерным.

Второй вопрос, что если эта плотность будет задана двумя колоколами - такое ведь тоже может быть, что число будет появляться чаще в окрестности двух значений.

А что если я хочу вообще задать плотность произвольной формы: лесенки + башенки, треугольники и синусы, наконец силуэт какого-то города, ну так, чисто для проверки возможности )))

Интегрируя плотность вероятности получаешь функцию распределения, затем находишь для неё обратную функцию. В качестве аргумента в обратную функцию закидывается равномерное случайное число 0..1, на выходе получится нужное распределение.

thunar ★★★★★ ()
Последнее исправление: thunar (всего исправлений: 1)

это типа профиль многомодальности как метка? оригинально, изобретаешь свой криптоалгоритм ? это правильно

штудируй литературу 80х по программируемым мк - там были темы генераторов с заданными параметрами как минимум

вопрос на засыпку - ник серьезный или это стёб такой?

anonymous ()

А что если я хочу вообще задать плотность произвольной формы

Монте-Карло для всего «хватит всем». ©

quickquest ★★★★★ ()
Последнее исправление: quickquest (всего исправлений: 1)

по сути это дискретное распределение. его ведь умеешь считать?

f1u77y ★★★ ()

Понятное дело, что в рамках 1/1000 кусочка плотности вероятности можем считать распределение равномерным.

Делишь свое распределение на n кусков, для каждого интегрируешь плотность, получая вероятность каждого куска.

tyakos ★★★ ()

В одном случае у тебя дискретное распределение, в другом - непрерывное, в третьем - смешанное. Обычно в учебниках по имитационному моделированию описывают то, как генерировать псевдослучайные числа по заданному распределению. Иногда мудренно пишут, а иногда - хорошо) Можешь посмотреть там

dave ★★★★★ ()

Если распределение задано неаналитически, то строишь гистограмму, потом кладешь ее столбики на бок в один непрерывный ряд и кидаешь на ряд равномерно распределенное число. В какой отрезок ряда (столбик) попадет, такая значит его судьба - координата по абсцисс у этой пробы будет та же, что у столбика, когда он стоял. Чем столбик выше, тем больше на него точек налетит.

rubic ()
Ответ на: комментарий от rubic

Да! Именно такой способ я отрыл в книге одной. Сейчас делаю. Там реально столбики набок повалены, общая их длина единица. И куда равномерное случайное число занесет - тот интервал и генерится (тоже равномерно). Соответственно, в более высокий столбик чаще попадет!

I-Love-Microsoft ★★★★★ ()
Ответ на: комментарий от rubic

В общем, тема решена, всем спасибо за их варианты. Они тоже видимо подходят, однако вот такой способ со «столбцами набок» оказался проще для моего понимания и реализации. Статистические результаты повторяют заданную мной плотность вероятности, причем любой «формы». Если форма симметрична - вижу МО 0,5

I-Love-Microsoft ★★★★★ ()
Последнее исправление: I-Love-Microsoft (всего исправлений: 1)

Достаточно случайной выборки с возвращением из исходного датасета. Ничего лучшего предложить по определению нельзя.

psv1967 ★★★★★ ()
Ответ на: комментарий от psv1967

Если речь идет об абсолютно непрерывной случайной величине, то можно. Плотность, заданную начальным набором данных, интерполировать полиномом, а дальше как в первом ответе.

Подробностей задачи ТСа я не знаю, но считаю, что с практической стороны Ваш метод, скорее всего, поставленную задачу решает на 100%.

aquadon ★★★★★ ()
Последнее исправление: aquadon (всего исправлений: 1)
Ответ на: комментарий от thunar

затем находишь для неё обратную функцию

Делов-то.

anonymous ()
Ответ на: комментарий от anonymous

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

aquadon ★★★★★ ()
Последнее исправление: aquadon (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.