Как сгенерировать случайные координаты в кольце которое образуется из двух кругов?

У меня есть два радиуса:

  • Маленький = 100 (Центр 0, 0)
  • Большой = 150 (Центр 0, 0)

Мне нужно найти случайную координату в кольце (Большой - Маленький)

Как это сделать?


Ответы (1 шт):

Автор решения: MBo

Сгенерировать случайный угол, равномерно распределенный по всему диапазону

Fi  = 2*PI * Random()

Сгенерировать случайное число, равномерно распределенное в диапазоне от квадрата радиуса внутреннего круга до квадрата радиуса внешнего

SquaredR  = r*r + Random()*(R*R - r*r)

Извлечь из последней величины квадратный корень

ra = Sqrt(SquaredR)

Получить координаты в кольце, они распределены однородно благодаря использованному преобразованию.

x, y = ra * Cos(Fi), ra * Sin(Fi)
→ Ссылка