Re: Задача экспромт
От: Sir Wiz Россия  
Дата: 25.06.04 08:59
Оценка:
Здравствуйте, rus blood, Вы писали:

RB>Дан круг с центром в начале координат, и радиуса R. Нужно заполнять его случайными точками, равномерно, но при этом используя полярные координаты. Т.е. нужно случайно выбирать угол f и расстояние от центра r так, чтобы точки заполняли круг равномерно.


RB>1. Как это сделать?

RB>2. Как это сделать, если в наличии имеется только ГСЧ с равномерным распределением (на заданном отрезке) ?

Давно головой не думал, всё руками. Надо попробовать.

Генерим угол f с помошью ГСЧ с равномерным распределением на отрезке [0, 2PI)

Далее, если мы возьмём растояние r с помошью ГСЧ с равномерным распределением на отрезке [0, R] (или [0, R), круг замкнутый, или нет? Впрочем, не важно), то точки будут заполнять круг не равномерно. Плотность точек будет одинакова на одинаковом растоянии от центра — по окружностям, и иметь обратную пропорциональную зависить от растояния до центра.

То есть, для расномерного заполения круга нам нужно генерить r на отрезке [0, R] с вероятностью, квадратично возрастающей на этом отрезке. (Как называется такое распределение?)

Для этого возмём случайную величину x с равномерным распределением на [0, 1], и получим искомую r = R * (1 — x*x). Всё. круг заполнится точками равномерно. Пользовались только равномерным распределением.

Я прав?
Re[2]: Задача экспромт
От: rus blood Россия  
Дата: 25.06.04 11:01
Оценка:
SW>Для этого возмём случайную величину x с равномерным распределением на [0, 1], и получим искомую r = R * (1 — x*x). Всё. круг заполнится точками равномерно. Пользовались только равномерным распределением.

SW>Я прав?

Нет, не прав. Например, если брать х случайно на отрезке [0,1], то половина точек должны быть меньше 1/2, а половина — больше. Это значит, что у половины точек радиус будет больше 3/4 * R, а другой половины — меньше. Но площадь круга с радиусом 3/4*R составляет 9/16 от площади всего круга. Т.е. распределение точек неравномерное.
Имею скафандр — готов путешествовать!
Re[3]: Задача экспромт
От: Sir Wiz Россия  
Дата: 25.06.04 11:47
Оценка: 5 (2) +2
Здравствуйте, rus blood, Вы писали:

SW>>Для этого возмём случайную величину x с равномерным распределением на [0, 1], и получим искомую r = R * (1 — x*x). Всё. круг заполнится точками равномерно. Пользовались только равномерным распределением.


SW>>Я прав?

RB>Нет, не прав. Например, если брать х случайно на отрезке [0,1], то половина точек должны быть меньше 1/2, а половина — больше. Это значит, что у половины точек радиус будет больше 3/4 * R, а другой половины — меньше. Но площадь круга с радиусом 3/4*R составляет 9/16 от площади всего круга. Т.е. распределение точек неравномерное.

Ну вот, точно давно головой не думал. Два мне.

Действительно, (1 — x*x) нельзя назвать обратной функцией к x*x, а вот sqrt(x) можно Поэтому:

Оставляем все размышления в силе, но правильная формула будет r = R * sqrt(x), где sqrt(x) — квадратный корень x.

Хм, может я опять не прав, но проверку с делением пополам это проходит.
Re[4]: Задача экспромт
От: Sir Wiz Россия  
Дата: 25.06.04 11:52
Оценка: :)
Здравствуйте, Sir Wiz, Вы писали:


SW>Хм, может я опять не прав, но проверку с делением пополам это проходит.


Хм, перечитал ветку форума, это решение уже было. И оно, очевидно, верное. Сорри за невнимательность. Зато сам решил. Всё, ушёл гордиться собой.
Re[4]: Задача экспромт
От: Brother_2  
Дата: 16.05.05 14:46
Оценка:
Обращаюсь за помощью ко всем, кто меня сейчас читает
Есть задачка, аналогичная рассматриваемой в данной теме: круг надо равномерно забросать точками, но уже в декартовой системе. Как это сделать? В теории вероятностей я пока плохо шарю, а решение нужно срочно.
Заранее всем благодарен!
Re[5]: Задача экспромт
От: Кодт Россия  
Дата: 16.05.05 22:05
Оценка:
Здравствуйте, Brother_2, Вы писали:

B_>Есть задачка, аналогичная рассматриваемой в данной теме: круг надо равномерно забросать точками, но уже в декартовой системе. Как это сделать? В теории вероятностей я пока плохо шарю, а решение нужно срочно.


А какая разница? Получаешь полярные координаты и пересчитываешь в декартовы.

И вообще, такая задача имеет стандартное решение.
Пусть длина вертикального среза фигуры — это функция h(x).
Для круга, очевидно, x^2+(h/2)^2 = r^2, то есть h = sqrt(r^2-x^2)*2
Интеграл H(x) = I(xmin,x) h(x)dx — это что-то вроде arctg, сейчас навскидку не скажу.
H(xmin)=0, H(xmax)=S — площадь фигуры.

x распределён так, что Н распределён равномерно.

Находим обратную функцию, x(H)
Диапазону значений H = [0;S] соответствует интегральная функция вероятности, P=[0;1]
Получив случайное значение H, находим x(H).

Теперь осталось найти y — он должен быть равномерно распределён на [ymin(x),ymax(x)], где ymax(x)-ymin(x)=h(x).

Вот и все дела.
Перекуём баги на фичи!
Re[5]: Задача экспромт
От: o.kostya  
Дата: 17.05.05 08:24
Оценка:
Здравствуйте, Brother_2, Вы писали:

B_>Есть задачка, аналогичная рассматриваемой в данной теме: круг надо равномерно забросать точками, но уже в декартовой системе.


Генеришь 2 случайных числа — Х и У координаты точки — если попала в круг — рисуешь, иначе выбрасываешь...
Т.е. заполняешь квадрат случайными точками равномерными, а потом вписываешь в квадрат окружность.
... << RSDN@Home 1.1.3 stable >>
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.