Как сгенерировать случайные координаты в кольце которое образуется из двух кругов?
У меня есть два радиуса:
- Маленький =
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)