2014 Mar 21 07:49 PM MDT | Math7 Programming18 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.