Задача экспромт
От: rus blood Россия  
Дата: 20.06.04 11:03
Оценка:
Задачка навеянная парадом самолетов
Автор: hemmul
Дата: 18.06.04
.

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

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

ЗЫ.
Просьба к тем, кто просто знает, как это делается, дать возможность подумать остальным.
Имею скафандр — готов путешествовать!
Re: Задача экспромт
От: Astaroth Россия  
Дата: 20.06.04 15:46
Оценка:
Здравствуйте, rus blood, Вы писали:

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

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

Можно в лоб
Берём два случайных числа x и y, <=R. Переводим (x, y) в (r, fi). Если я не ошибаюсь, fi = arctg(y/x), r = sqrt(x^2+y^2) Если r>R, число отбрасываем. Если нет — плюём на экран

А вообще, нужно достать учебник по теорверу и посмотреть, как работать со случайными векторами...
Это не наезды, это вопросы. И вообще, над ламерами смеяться грешно.
http://livejournal.com/users/breqwas
Re[2]: Задача экспромт
От: rus blood Россия  
Дата: 20.06.04 16:26
Оценка:
A>Можно в лоб
A>Берём два случайных числа x и y, <=R. Переводим (x, y) в (r, fi). Если я не ошибаюсь, fi = arctg(y/x), r = sqrt(x^2+y^2) Если r>R, число отбрасываем. Если нет — плюём на экран

Нет, нужно случайно брать угол и расстояние от центра. Скажем так, способ с квадратом плох тем, что его КПД равно pi/4. Если использовать полярные координаты, то КПД будет 1.
Имею скафандр — готов путешествовать!
Re[3]: Задача экспромт
От: Astaroth Россия  
Дата: 20.06.04 17:21
Оценка:
Здравствуйте, rus blood, Вы писали:

RB>Нет, нужно случайно брать угол и расстояние от центра.


Это не наезды, это вопросы. И вообще, над ламерами смеяться грешно.
http://livejournal.com/users/breqwas
Re[3]: Задача экспромт
От: Neo09 Россия  
Дата: 20.06.04 18:33
Оценка: -1
Здравствуйте, rus blood, Вы писали:


A>>Можно в лоб

A>>Берём два случайных числа x и y, <=R. Переводим (x, y) в (r, fi). Если я не ошибаюсь, fi = arctg(y/x), r = sqrt(x^2+y^2) Если r>R, число отбрасываем. Если нет — плюём на экран

RB>Нет, нужно случайно брать угол и расстояние от центра. Скажем так, способ с квадратом плох тем, что его КПД равно pi/4. Если использовать полярные координаты, то КПД будет 1.


Это неправильно, т.к. в этом случае распределение не будет равномерным.
Наиболее лучшим здесь будет вот что:
Берем случайно x из отрезка [-R, R], а y из отрезка [-sqrt(R^2 — x^2), sqrt(R^2 — x^2)].
А далее, как уже было сказано, переходим в полярные координаты.
Re[4]: Задача экспромт
От: rus blood Россия  
Дата: 21.06.04 06:37
Оценка:
N>Берем случайно x из отрезка [-R, R], а y из отрезка [-sqrt(R^2 — x^2), sqrt(R^2 — x^2)].
N>А далее, как уже было сказано, переходим в полярные координаты.

Вот это точно неправильно...
Имею скафандр — готов путешествовать!
Re: Задача экспромт
От: Аноним  
Дата: 21.06.04 08:21
Оценка:
Здравствуйте, rus blood, Вы писали:

RB>Задачка навеянная парадом самолетов
Автор: hemmul
Дата: 18.06.04
.


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


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

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

RB>ЗЫ.

RB>Просьба к тем, кто просто знает, как это делается, дать возможность подумать остальным.

Что-то я не понял в чем проблема...

Я бы делал так :

0) Так как круг в полярных коорд есть квадрат, то задача сводится к выбору случайной точки на квадрате [0, R]x[0, 2*Pi]

Тогда :

1) Берем

х1 ~ U[0, R]
x2 ~ U[0, 2*Pi]

2) x = (x1, x2) — искомая случ. величина.

Можно делать методом исключения(Неймана) :

строим случ величину по правилу :
1)
y1 ~ U[-R, R]
y2 ~ U[-R, R]

2) если точка y = (y1, y2) удалена от точки (0, 0) более чем на R, то переходим к 1) иначе 3)

3) полагаем x = y, x — искомая случ величина..
Re[2]: Задача экспромт
От: rus blood Россия  
Дата: 21.06.04 08:42
Оценка:
А>0) Так как круг в полярных коорд есть квадрат, то задача сводится к выбору случайной точки на квадрате [0, R]x[0, 2*Pi]

А>Тогда :


А>1) Берем


А>х1 ~ U[0, R]

А>x2 ~ U[0, 2*Pi]

А>2) x = (x1, x2) — искомая случ. величина.


Это неверно... Двойка...


А>Можно делать методом исключения(Неймана) :


А>строим случ величину по правилу :

А>1)
А>y1 ~ U[-R, R]
А>y2 ~ U[-R, R]

А>2) если точка y = (y1, y2) удалена от точки (0, 0) более чем на R, то переходим к 1) иначе 3)


А>3) полагаем x = y, x — искомая случ величина..


Это тот же вариант с квадратом
Автор: Astaroth
Дата: 20.06.04
.
Имею скафандр — готов путешествовать!
Re[3]: Задача экспромт
От: Аноним  
Дата: 21.06.04 08:48
Оценка:
Здравствуйте, rus blood, Вы писали:


А>>0) Так как круг в полярных коорд есть квадрат, то задача сводится к выбору случайной точки на квадрате [0, R]x[0, 2*Pi]


А>>Тогда :


А>>1) Берем


А>>х1 ~ U[0, R]

А>>x2 ~ U[0, 2*Pi]

А>>2) x = (x1, x2) — искомая случ. величина.


RB>Это неверно... Двойка...


С чего это ?

P(dS) = dF*dR = dS


А>>Можно делать методом исключения(Неймана) :



RB>Это тот же вариант с квадратом
Автор: Astaroth
Дата: 20.06.04
.


Согласен.
Re[4]: Задача экспромт
От: Аноним  
Дата: 21.06.04 08:54
Оценка:
А>>>0) Так как круг в полярных коорд есть квадрат, то задача сводится к выбору случайной точки на квадрате [0, R]x[0, 2*Pi]

А>>>Тогда :


А>>>1) Берем


А>>>х1 ~ U[0, R]

А>>>x2 ~ U[0, 2*Pi]

А>>>2) x = (x1, x2) — искомая случ. величина.


RB>>Это неверно... Двойка...


А>С чего это ?


А>P(dS) = dF*dR = dS



Наверное непонятно...

Ну вот смотри...
если
Fх — функция распределения величины x,
P — вероятность
то
Fx( dS ) = P( x из dS ) = P( x1 из dS1, x2 из dS2 ) = P(x1 из dS1)*P(x2 из dS2) = dS1*dS2 = dS
то есть распредление равномерно.

Где неправ ?
Re[5]: Задача экспромт
От: rus blood Россия  
Дата: 21.06.04 09:09
Оценка:
А>Наверное непонятно...

А>Ну вот смотри...

А>если
А>Fх — функция распределения величины x,
А>P — вероятность
А>то
А>Fx( dS ) = P( x из dS ) = P( x1 из dS1, x2 из dS2 ) = P(x1 из dS1)*P(x2 из dS2) = dS1*dS2 = dS
А>то есть распредление равномерно.

А>Где неправ ?


Неправ во время замены координат (с полярной на прямоугольную).
Площадь сегмента уже не равна произведению ds1*ds2...
Имею скафандр — готов путешествовать!
Re[6]: Задача экспромт
От: Аноним  
Дата: 21.06.04 09:29
Оценка:
А>>Ну вот смотри...
А>>если
А>>Fх — функция распределения величины x,
А>>P — вероятность
А>>то
А>>Fx( dS ) = P( x из dS ) = P( x1 из dS1, x2 из dS2 ) = P(x1 из dS1)*P(x2 из dS2) = dS1*dS2 = dS
А>>то есть распредление равномерно.

А>>Где неправ ?


RB>Неправ во время замены координат (с полярной на прямоугольную).

RB>Площадь сегмента уже не равна произведению ds1*ds2...

Бр-р-р-р... Я нигде никаких коорд не заменял.

Ну да ладно...

Что значит, что случ величина x распределна равномерно в круге ?
Значит что P( x из dS ) = dS, где dS — элемент круга. так ?

Что такое dS ?

dS = dR*dFi, где dR — есть радиус, dFi — есть угол. Почему так ?
Так как площадь сегмента круга есть радиус*длина_дуги, отсюда площадь элемента круга = изменение_радиуса*длина_дуги и равно с учетом малости угла = dR*dFi. Так ? (чувствую что твоя загвоздка здесь)

Тогда строим случ величину x(см. выше) и получаем, что она равномерно распределена в круге. Естественно необходимо заменить dS1 на dR и dS2 на dFi...

Нигде ни откаких коорд ни к какими я не переходил...

Опять не прав ? где ?
Re[7]: Задача экспромт
От: rus blood Россия  
Дата: 21.06.04 09:43
Оценка:
А>Так как площадь сегмента круга есть радиус*длина_дуги, отсюда площадь элемента круга = изменение_радиуса*длина_дуги и равно с учетом малости угла = dR*dFi. Так ? (чувствую что твоя загвоздка здесь)

Угу, примерно здесь ты и не прав.

Посчитай, например, площадь круга по твоей формуле dS = dR*dFi ...
Имею скафандр — готов путешествовать!
Re[7]: Задача экспромт
От: hemmul США  
Дата: 21.06.04 09:44
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Что такое dS ?


А>dS = dR*dFi, где dR — есть радиус, dFi — есть угол. Почему так ?

А>Так как площадь сегмента круга есть радиус*длина_дуги, отсюда площадь элемента круга = изменение_радиуса*длина_дуги и равно с учетом малости угла = dR*dFi. Так ? (чувствую что твоя загвоздка здесь)
нууу... либо ты описАлся дваждвы, либо здесь твоя загвоздка
хоть по размерности не чувствуешь что формула для площади не верна?

vox clamantis in deserto
Re[6]: Задача экспромт
От: Аноним  
Дата: 21.06.04 09:45
Оценка:
RB>Неправ во время замены координат (с полярной на прямоугольную).
RB>Площадь сегмента уже не равна произведению ds1*ds2...

Кстати еще вот вспомнил... Если что напутал сильно не бить

1)
Чтобы получить случайное напрвление в пространстве необходимо брать вектор с нормальными компонентами. Тогда в нашем случае компонент всего две и следовательно необходимо получить пару нормально распределнных сл. величин, имея лишь равномерно рапсредленные.

2) а это делается используя формулы какого-то двольно известного мужика.. что-то типа

эх... не помню...
что-то типа так :
a1 = 2*r1 — 1
a2 = 2*Pi*r2
x1 = cos(a2)*sqrt( 1 — a1*a1 )
x2 = sin(a2)*sqrt( 1 — a1*a1 )

ага точно так... то есть x1 и x2 есть пара нормально распределнных случ величин, где r1 r2 — равномерно распределнные с.в.

Ну вот типа тогда за искомую величину можно положить x = ( x1, x2 )

Опять не прав ?
Re[8]: Задача экспромт
От: Аноним  
Дата: 21.06.04 10:12
Оценка:
А>>Что такое dS ?

А>>dS = dR*dFi, где dR — есть радиус, dFi — есть угол. Почему так ?

А>>Так как площадь сегмента круга есть радиус*длина_дуги, отсюда площадь элемента круга = изменение_радиуса*длина_дуги и равно с учетом малости угла = dR*dFi. Так ? (чувствую что твоя загвоздка здесь)
H>нууу... либо ты описАлся дваждвы, либо здесь твоя загвоздка
H>хоть по размерности не чувствуешь что формула для площади не верна?

цыц (надо было где-то положить что r=1, эх... ) уели...

но не сильно, так как я работал в полярных коорд и никуда не переходил... моя точка x=(x1, x2) — это точка в поляр коорд. и давайте вспомним задачу : "Т.е. нужно случайно выбирать угол f и расстояние от центра r так, чтобы точки заполняли круг равномерно"

Тогда :

Если брать
f ~ U[0, 2*Pi]
r ~ U[-R, R]

и ставить точку с полярными коорд (r, f), то она будет распределена равномерно в круге.
Это кстати согласуется с теми формулами которые я привел
здесь
Автор:
Дата: 21.06.04
только надо еще на R домножить Опять про него забыл...

И пусть первый кто скажет что это не так бросит в меня камень !
Re[9]: Задача экспромт
От: Аноним  
Дата: 21.06.04 10:17
Оценка:
А>r ~ U[-R, R]
r ~ U[ 0, R]
Пардон
Re[7]: Задача экспромт
От: Satrapp Россия  
Дата: 21.06.04 11:00
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>Что такое dS ?

А>dS = dR*dFi, где dR — есть радиус, dFi — есть угол. Почему так ?
А>Так как площадь сегмента круга есть радиус*длина_дуги, отсюда площадь элемента круга = изменение_радиуса*длина_дуги и равно с учетом малости угла = dR*dFi. Так ? (чувствую что твоя загвоздка здесь)
dS = r dr dFi. И r здесь НЕ равно R. r меняется от 0 до R. Чем ближе к центру, тем этот элемент имеет меньшую площадь.
... << RSDN@Home 1.1.0 stable >>
Re[9]: Задача экспромт
От: Eugene Sh Россия  
Дата: 21.06.04 12:44
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Если брать

А>f ~ U[0, 2*Pi]
А>r ~ U[0, R]

А>и ставить точку с полярными коорд (r, f), то она будет распределена равномерно в круге.

Давайте посмотрим. В круг с центром в начале координат и радиусом r = R / 100 мы попадём с вероятностью 1/100 (достаточно того, что r < R/100, f — любое). Теперь рассмотрим такой же маленький круг, но возле границы исходного. Посчитать вероятность попадания точки в этот круг не могу, но явно видно, что она меньше 1/100. Т.к. для этого должно выполниться 2 условия:
R * 98 / 100 < r < R (вероятность 2/100)
f_1 < f < f_2, где f_2 — f_1 меньше какого-то числа, которое явно меньше чем Pi/2, т.е. вероятность этого меньше 1/4.
P(попадания в круг у границы) < 2/100 * 1/4 < 1/100 = P(попадания в круг того же радиуса, но в центре), т.е. распределение не будет равномерным.
Re: Задача экспромт
От: IO Украина  
Дата: 21.06.04 17:17
Оценка:
Здравствуйте, rus blood, Вы писали:

RB>Задачка навеянная парадом самолетов
Автор: hemmul
Дата: 18.06.04
.


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


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

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

Я конечно извиняюсь, но почему просто не выбрать случайные координаты и если они попадают в круг, то посчитать угол и расстояние от центра. Получим функцию генерации f & r что удовлетворяет условию.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.