2014 Mar 22 01:49 AM UTC | Math7 Programming18 [2014]3

For my Grammar bot, I added a new feature: GPS coordinates are added to the tweets. This is just for fun and serves no practical purpose.

However, I wanted the tweets to be uniformly distributed over a sphere. Earth’s shape is not a sphere, but the error is under 1%.

$a$ and $b$ are random values uniformly distributed in $[-1,1]$ $$latitude=\theta=\sin^{-1}(u)$$
$$longitude=\phi=\pi v=(180^{\circ}) v$$

According to Wolfram MathWorld, points are randomly distributed over a sphere if:

$\theta$ represents latitude and $\phi$ longitude.
$u$ and $v$ are uniformly distributed in $[0,1]$

$$\theta=\cos^{-1}(2u-1)$$
$$\phi=2\pi v$$

Adjusting $u$ and $v$, now distributed in $[-1,1]$, we get: $$\theta=\cos^{-1}(u)$$
$$\phi=\pi (v + 1)$$

However, latitude is to be in -90 to 90 degrees, not 0 to 180 degrees, and longitude is to be in -180 to 180 degrees, not 0 to 360 degrees. $$\theta=\cos^{-1}(u)-\frac\pi2=-\sin^{-1}u$$
$$\phi=\pi v$$

By spherical symmetry, the negative sign can be removed from latitude, and the distribution will remain the same.