Получи случайную криптовалюту за регистрацию!

Иногда возникает задача сделать равномерное распределение точе | Sijeko Tech

Иногда возникает задача сделать равномерное распределение точек на сфере. Например, случайные координаты на земном шаре.

Как правило программист выбирает широту и долготу равномерным распределением (обычный rand) двух чисел в диапазоне:
широта = [0, π)
долгота = [0, 2π)

Но это неправильно (в смысле равномерного распределения). Если так сделать, то к полюсам сферы «случайные» точки будут гуще. То есть, вероятность появления точки у полюса гораздо выше, чем у экватора.

Как сделать правильно?

Нужно выбрать два случайных числа a и b, равномерно распределённых в диапазоне [0, 1).
a = rand[0, 1)
b = rand[0, 1)
После этого:
широта = arccos(2a−1)
долгота = 2πb

Это всё в радианах, конечно. В зависимости от конечного API перевести в градусы по вкусу.

Вот видео для сравнения. Разница колоссальная.