Здравствуйте, 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). Всё. круг заполнится точками равномерно. Пользовались только равномерным распределением.
Я прав?