Дан круг с центром в начале координат, и радиуса R. Нужно заполнять его случайными точками, равномерно, но при этом используя полярные координаты. Т.е. нужно случайно выбирать угол f и расстояние от центра r так, чтобы точки заполняли круг равномерно.
1. Как это сделать?
2. Как это сделать, если в наличии имеется только ГСЧ с равномерным распределением (на заданном отрезке) ?
ЗЫ.
Просьба к тем, кто просто знает, как это делается, дать возможность подумать остальным.
Здравствуйте, 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, число отбрасываем. Если нет — плюём на экран
А вообще, нужно достать учебник по теорверу и посмотреть, как работать со случайными векторами...
Это не наезды, это вопросы. И вообще, над ламерами смеяться грешно.
A>Можно в лоб A>Берём два случайных числа x и y, <=R. Переводим (x, y) в (r, fi). Если я не ошибаюсь, fi = arctg(y/x), r = sqrt(x^2+y^2) Если r>R, число отбрасываем. Если нет — плюём на экран
Нет, нужно случайно брать угол и расстояние от центра. Скажем так, способ с квадратом плох тем, что его КПД равно pi/4. Если использовать полярные координаты, то КПД будет 1.
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)].
А далее, как уже было сказано, переходим в полярные координаты.
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>Задачка навеянная парадом самолетов
.
RB>Дан круг с центром в начале координат, и радиуса R. Нужно заполнять его случайными точками, равномерно, но при этом используя полярные координаты. Т.е. нужно случайно выбирать угол f и расстояние от центра r так, чтобы точки заполняли круг равномерно.
RB>1. Как это сделать? RB>2. Как это сделать, если в наличии имеется только ГСЧ с равномерным распределением (на заданном отрезке) ?
RB>ЗЫ. RB>Просьба к тем, кто просто знает, как это делается, дать возможность подумать остальным.
Что-то я не понял в чем проблема...
Я бы делал так :
0) Так как круг в полярных коорд есть квадрат, то задача сводится к выбору случайной точки на квадрате [0, R]x[0, 2*Pi]
А>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 — искомая случ величина..
А>>0) Так как круг в полярных коорд есть квадрат, то задача сводится к выбору случайной точки на квадрате [0, R]x[0, 2*Pi]
А>>Тогда :
А>>1) Берем
А>>х1 ~ U[0, R] А>>x2 ~ U[0, 2*Pi]
А>>2) x = (x1, x2) — искомая случ. величина.
RB>Это неверно... Двойка...
А>>>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
то есть распредление равномерно.
А>Наверное непонятно...
А>Ну вот смотри... А>если А>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...
Нигде ни откаких коорд ни к какими я не переходил...
А>Так как площадь сегмента круга есть радиус*длина_дуги, отсюда площадь элемента круга = изменение_радиуса*длина_дуги и равно с учетом малости угла = dR*dFi. Так ? (чувствую что твоя загвоздка здесь)
Угу, примерно здесь ты и не прав.
Посчитай, например, площадь круга по твоей формуле dS = dR*dFi ...
Здравствуйте, Аноним, Вы писали:
А>Что такое 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), то она будет распределена равномерно в круге.
Это кстати согласуется с теми формулами которые я привел здесь
Здравствуйте, <Аноним>, Вы писали:
А>Что такое dS ? А>dS = dR*dFi, где dR — есть радиус, dFi — есть угол. Почему так ? А>Так как площадь сегмента круга есть радиус*длина_дуги, отсюда площадь элемента круга = изменение_радиуса*длина_дуги и равно с учетом малости угла = dR*dFi. Так ? (чувствую что твоя загвоздка здесь)
dS = r dr dFi. И r здесь НЕ равно R. r меняется от 0 до R. Чем ближе к центру, тем этот элемент имеет меньшую площадь.
Здравствуйте, Аноним, Вы писали:
А>Если брать А>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(попадания в круг того же радиуса, но в центре), т.е. распределение не будет равномерным.
.
RB>Дан круг с центром в начале координат, и радиуса R. Нужно заполнять его случайными точками, равномерно, но при этом используя полярные координаты. Т.е. нужно случайно выбирать угол f и расстояние от центра r так, чтобы точки заполняли круг равномерно.
RB>1. Как это сделать? RB>2. Как это сделать, если в наличии имеется только ГСЧ с равномерным распределением (на заданном отрезке) ?
Я конечно извиняюсь, но почему просто не выбрать случайные координаты и если они попадают в круг, то посчитать угол и расстояние от центра. Получим функцию генерации f & r что удовлетворяет условию.
Re[10]: Задача экспромт
От:
Аноним
Дата:
21.06.04 17:19
Оценка:
Здравствуйте, Eugene Sh, Вы писали:
ES>Здравствуйте, Аноним, Вы писали:
А>>Если брать А>>f ~ U[0, 2*Pi] А>>r ~ U[0, R]
А>>и ставить точку с полярными коорд (r, f), то она будет распределена равномерно в круге. ES>Давайте посмотрим. В круг с центром в начале координат и радиусом r = R / 100 мы попадём с вероятностью 1/100 (достаточно того, что r < R/100, f — любое). Теперь рассмотрим такой же маленький круг, но возле границы исходного. Посчитать вероятность попадания точки в этот круг не могу, но явно видно, что она меньше 1/100. Т.к. для этого должно выполниться 2 условия: ES>R * 98 / 100 < r < R (вероятность 2/100) ES>f_1 < f < f_2, где f_2 — f_1 меньше какого-то числа, которое явно меньше чем Pi/2, т.е. вероятность этого меньше 1/4. ES>P(попадания в круг у границы) < 2/100 * 1/4 < 1/100 = P(попадания в круг того же радиуса, но в центре), т.е. распределение не будет равномерным.
А ? О чем это ? Что-то ты путаешь... как и я впрочем(в предыдущих постах )
1) Если рассматривать круг в пол. коорд., то он выглядит как прям-ик и верояность попасть в этот кружок с радиусом r=R/100, который предсатвляет их себя полосу, равна 1/100.
Так как : Плотность распределения в этом случае равна 1/2PiR и интеграл по этой полосе даст как раз 1/100.
2) То что ты пытаешся нарисовать такой же кружок в декартовых коорд. смещенный от центра и тем самым подловить меня, тебе не поможет. Так как в случае декартовых коорд. вероятность попасть в круг радиуса r=R/100 c центром в нуле не равна 1/100, а равна она 1/10000.
Так как : Плотность распределения в этом случае равна 1/PiR^2 и интеграл по этому кругу даст 1/10000. Аналогично и для смещенного от центра кружка получим такую же вероятность.
3) Собсно на этом я и подскользнулся а именно на том, что вероятность есть интеграл плотности по множеству, а при переходе от одной системы к другой подыинтегральное выражение претерпевает изменения. Нетрудно показать, что якобиан преобразования равен r, то есть dx1*dx2 = r*dr*df.
Это я конечно сглупил, притом очччень сильно ((( Эх... старею...
4) Ответ же есть такой :
А>>Если брать А>>f ~ U[0, 2*Pi] А>>r ~ U[0, R]
А>>и ставить точку с полярными коорд (r, f), то она будет распределена равномерно в круге.
в декартовых коорд. выглядит как :
x1 = r*cos(f)
x2 = r*sin(f)
Здравствуйте, Аноним, Вы писали:
А>4) Ответ же есть такой :
А>Если брать А>f ~ U[0, 2*Pi] А>r ~ U[0, R]
А>и ставить точку с полярными коорд (r, f), то она будет распределена равномерно в круге.
Ну вот посмотрите.
Распределение равномерное, если взяв любые две площади отношение p1/S1 = p2/S2 (а точнее p1*S2 = p2*S1),
где p1 и p2 — вероятности попадания произвольной точки в площадь S1 и S2 соответсвенно.
Ну хорошо, возьмем вот такие плошади, как на рисунки. И что же мы видим: вероятности попадания в площадь S1 и S2 одинаковы (т.к. r ~ U[0, R]), но площади то не одинаковые!!!
То есть получаем, что распределение неравномерное.
.
RB>Дан круг с центром в начале координат, и радиуса R. Нужно заполнять его случайными точками, равномерно, но при этом используя полярные координаты. Т.е. нужно случайно выбирать угол f и расстояние от центра r так, чтобы точки заполняли круг равномерно.
RB>1. Как это сделать? RB>2. Как это сделать, если в наличии имеется только ГСЧ с равномерным распределением (на заданном отрезке) ?
RB>ЗЫ. RB>Просьба к тем, кто просто знает, как это делается, дать возможность подумать остальным.
А по-моему вот это точно будет правильно.
Нам нужно выбирать случайную точку (r, f) для круга радиуса R в полярных координатах следующим образом:
r = sqrt(ГСЧ[0, R^2]);
f = ГСЧ[0, 2*Pi].
По моим расчетам при этом получается равномерное распределение.
Re[12]: Задача экспромт
От:
Аноним
Дата:
22.06.04 02:25
Оценка:
N>
N>Ну вот посмотрите. N>Распределение равномерное, если взяв любые две площади отношение p1/S1 = p2/S2 (а точнее p1*S2 = p2*S1), N>где p1 и p2 — вероятности попадания произвольной точки в площадь S1 и S2 соответсвенно. N>Ну хорошо, возьмем вот такие плошади, как на рисунки. И что же мы видим: вероятности попадания в площадь S1 и S2 одинаковы (т.к. r ~ U[0, R]), но площади то не одинаковые!!!
Ты определись у тебя круг в декартовых коорд или в полярных.
А то ты считаешь площадь(считай что вероятность) в пол. коорд., а потом сравниваешь её с площадью в дек. коорд.
Это не есть правильно.
Так как площадь S есть ингерал единицы(1) по элементу dS, а при переходе от одной системы коорд к другой dS меняется.
Пример на пальцах :
Поверхность сферы можно отобразить на плоскость("ставим" сферу на плоскость и из верхнего полюса испускаем лучи, проходящие через сферу. Точка пересечения луча с плоскостью — образ, точка пересечения луча с поверхностью сферы — прообраз). Переход от сферических коорд. к дек.
Площадь сферы какая ?
А площадь плоскости ?
А сравнивать их смысл есть ?
Вот и ты сравниваешь на сфере площади двух, скажем, полусфер, говоришь вот они равны. А потом смотришь на плоскость и говоришь, во а там они не равны...
Понятно, нет ?
N>То есть получаем, что распределение неравномерное.
равномерное-равномерное
Re[13]: Задача экспромт
От:
Аноним
Дата:
22.06.04 02:33
Оценка:
А>Так как площадь S есть интеграл по S от единицы(1) на элемент dS, а при переходе от одной системы коорд к другой dS меняется.
Процедура "развертывания" круга в прямоугольник и есть замена координат.
В декартовых координатах круг — это круг , в полярных — прямоугольник...
Вот это и есть замена координат, которую ты делаешь.
А>4) Ответ же есть такой :
А>>>Если брать А>>>f ~ U[0, 2*Pi] А>>>r ~ U[0, R]
А>>>и ставить точку с полярными коорд (r, f), то она будет распределена равномерно в круге.
А>в декартовых коорд. выглядит как : А>x1 = r*cos(f) А>x2 = r*sin(f)
IO>Я конечно извиняюсь, но почему просто не выбрать случайные координаты и если они попадают в круг, то посчитать угол и расстояние от центра. Получим функцию генерации f & r что удовлетворяет условию.
N>Нам нужно выбирать случайную точку (r, f) для круга радиуса R в полярных координатах следующим образом:
N>r = sqrt(ГСЧ[0, R^2]); N>f = ГСЧ[0, 2*Pi].
N>По моим расчетам при этом получается равномерное распределение.
Здравствуйте, Аноним, Вы писали:
А>Ты определись у тебя круг в декартовых коорд или в полярных. А>А то ты считаешь площадь(считай что вероятность) в пол. коорд., а потом сравниваешь её с площадью в дек. коорд. А>Это не есть правильно.
Это есть правильно!
Площадь в полярной и декартовой системах координат будет одинаковой.
А то что вы говорите, что круг в полярных координатах — прямоугольник, еще не значит, что его площадь нужно считать так же, как площадь прямоугольника в декартовых.
А>Так как площадь S есть ингерал единицы(1) по элементу dS, а при переходе от одной системы коорд к другой dS меняется.
А>Пример на пальцах :
А>Поверхность сферы можно отобразить на плоскость("ставим" сферу на плоскость и из верхнего полюса испускаем лучи, проходящие через сферу. Точка пересечения луча с плоскостью — образ, точка пересечения луча с поверхностью сферы — прообраз). Переход от сферических коорд. к дек.
А>Площадь сферы какая ? А>А площадь плоскости ? А>А сравнивать их смысл есть ?
А>Вот и ты сравниваешь на сфере площади двух, скажем, полусфер, говоришь вот они равны. А потом смотришь на плоскость и говоришь, во а там они не равны...
Неудачный пример. Приведите другой.
1) Здесь произведен грубый переход и неправильный конечно же. Вы переходите из системы координат с тремя степенями свободы в систему координат с двумя с.с. При этом у нас конечно же потеряется часть информации, и говорить о каком-то там равенстве или неравенстве уже бессмысленно.
2) И все же даже на плоскости проекции полусфер равны, если вы имеете в виду провести через центр сферы какую-то плоскость и разделить сферу на две.
А>Понятно, нет ?
Нет!
N>>То есть получаем, что распределение неравномерное.
Здравствуйте, rus blood, Вы писали:
RB>Дан круг с центром в начале координат, и радиуса R. Нужно заполнять его случайными точками, равномерно, но при этом используя полярные координаты. Т.е. нужно случайно выбирать угол f и расстояние от центра r так, чтобы точки заполняли круг равномерно.
RB>1. Как это сделать? RB>2. Как это сделать, если в наличии имеется только ГСЧ с равномерным распределением (на заданном отрезке) ?
N>>Нам нужно выбирать случайную точку (r, f) для круга радиуса R в полярных координатах следующим образом:
N>>r = sqrt(ГСЧ[0, R^2]); N>>f = ГСЧ[0, 2*Pi].
N>>По моим расчетам при этом получается равномерное распределение.
RB>Правильно. Решение, плз...
Нам нужно доказать что при таком выборе точек распределение получается равномерным.
Распределение по углам равномерно (т.к. f = ГСЧ[0, 2*Pi]), т.е для любой окружности с центром в начале координат вероятности любых точек на этой окружности равны.
Теперь нужно доказать, что для любых двух окружностей вероятности точек на них одинаковы.
Выберем произвольное число 0 < r < R
p1 и p2 — вероятности попадания случайной точки в площадь S1 и S2 соответственно.
N>Нам нужно доказать что при таком выборе точек распределение получается равномерным. N>Распределение по углам равномерно (т.к. f = ГСЧ[0, 2*Pi]), т.е для любой окружности с центром в начале координат вероятности любых точек на этой окружности равны. N>Теперь нужно доказать, что для любых двух окружностей вероятности точек на них одинаковы. N>Выберем произвольное число 0 < r < R
[skipped] N>p1 и p2 — вероятности попадания случайной точки в площадь S1 и S2 соответственно.
Это конечно верно, но это просто проверка, что полученное решение верное.
Здравствуйте, rus blood, Вы писали:
RB>Это конечно верно, но это просто проверка, что полученное решение верное.
RB>А как само решение было получено?
А решение было получено из простого предположения, а точнее когда я доказывал Анониму, что его решение неправильное, я подумал, как сделать так, чтобы все срослось.
А по-моему какое-то предположение с доказательством его правильности и является решением.
N>А по-моему какое-то предположение с доказательством его правильности и является решением.
Нет, решения способом божественного откровения не засчитывется...
ЗЫ.
Случай был как-то у нас на семинаре по алгебре. Задавал препод задачки на дом, а потом ищет того, кто решил, и кто не решил. Тот, кто решил идет к доске рассказывать, и тот, кто не решил встает и начинает пересказывать, типа что и как он понял.
Была у нас девушка одна. Однажды перед семинаром просит решение одной задачки. Ну, ессно, дал списать. Как назло вызывают ее идти к доске. Чувак, который пересказывает, начинает задавать дополнительные вопросы, девушка, ясный пень, не в теме...
В итоге звучит вопрос препода: "Ну, как Вы решали?".
Та выдает: "Ну, я вообще-то с помощью Руслана решала".
Препод в осадке — "Я", говорит, "много всяких способов знаю, как решать эту задачу, но про такой слышу впервые..."
Это... а не эквивалетно ли это тому что писал Аноним ?
Он типа написал что
x1=r*sin(f)
x2=r*cos(f)
Если взять sqrt(x1^2 + x2^2) = sqrt(r^2) = ваш r (то есть тот r который ты моделируешь)
гы-гы..
Мне кажется, что вы(Neo и Аноним) оба правы...Причем решение Анонима выглядит проще и по-моему убедительнее. Доказывать что-то лень. Может Аноним что-то докажет, а то как видно ему делать нечего
Здравствуйте, Аноним, Вы писали:
А>И хотя сама задача требовала ответа именно в полярных коорд., почему то rus blood ответ пытался услышать в декартовой.
Если бы смысл задачи был в том, чтобы найти "равномерное распределение в полярных координатах", то, я думаю, такая задача даже не появилась бы в этом форуме.
Если убрать в условии словосочетание "полярные координаты", которое вызывает споры, то задачу стоило бы читать так:
Дан круг с центром в начале координат, и радиуса R. Нужно заполнять его случайными точками, равномерно. При этом можно лишь случайно выбирать угол f и расстояние от центра r.
1. Как это сделать?
2. Как это сделать, если в наличии имеется только ГСЧ с равномерным распределением (на заданном отрезке) ?
Здравствуйте, 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). Всё. круг заполнится точками равномерно. Пользовались только равномерным распределением.
SW>Для этого возмём случайную величину x с равномерным распределением на [0, 1], и получим искомую r = R * (1 — x*x). Всё. круг заполнится точками равномерно. Пользовались только равномерным распределением.
SW>Я прав?
Нет, не прав. Например, если брать х случайно на отрезке [0,1], то половина точек должны быть меньше 1/2, а половина — больше. Это значит, что у половины точек радиус будет больше 3/4 * R, а другой половины — меньше. Но площадь круга с радиусом 3/4*R составляет 9/16 от площади всего круга. Т.е. распределение точек неравномерное.
Здравствуйте, 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.
Хм, может я опять не прав, но проверку с делением пополам это проходит.
Обращаюсь за помощью ко всем, кто меня сейчас читает
Есть задачка, аналогичная рассматриваемой в данной теме: круг надо равномерно забросать точками, но уже в декартовой системе. Как это сделать? В теории вероятностей я пока плохо шарю, а решение нужно срочно.
Заранее всем благодарен!
Здравствуйте, 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).
Здравствуйте, Brother_2, Вы писали:
B_>Есть задачка, аналогичная рассматриваемой в данной теме: круг надо равномерно забросать точками, но уже в декартовой системе.
Генеришь 2 случайных числа — Х и У координаты точки — если попала в круг — рисуешь, иначе выбрасываешь...
Т.е. заполняешь квадрат случайными точками равномерными, а потом вписываешь в квадрат окружность.