# Random coordinate

## Main Question or Discussion Point

How do i randomize a position on a sphere? Using a random number between 0 and 360 for longitude and a number between -90 to 90 for latitude would make it more probable to get closer to the poles right?

picking 3 random numbers between 0 and 1 for the x,y and z coordinates sounds like a better bet...

Mark44
Mentor
picking 3 random numbers between 0 and 1 for the x,y and z coordinates sounds like a better bet...
Almost all of the time, this would give you a point inside a sphere of radius 1, which isn't what the OP asked for. For a point to be on the surface of the sphere, the squares of the coordinates would have to add to the square of the radius.

Apologies...didn't read the question properly. How about just picking the x and y coordinates as I suggested, and then randomly choosing whether the z-coordinate is positive or negative?

D H
Staff Emeritus
Drawing sine(latitude) from U[-1,1] and longitude from U[0,360º) does the trick.

A good random number package will provide separate interfaces for drawing from U[0,1), U[0,1], U(0,1), and U(0,1]. A not so good one might only provide just one of these four. There are some very small drawbacks to using not quite the right interface. For example, drawing longitude from U[0,360º] gives a small chance of doubling up on 0 versus 360º. Drawing sine(latitude) from U[-1,1) means you ruled out the North Pole.

Drawing sine(latitude) from U[-1,1] and longitude from U[0,360º) does the trick.

A good random number package will provide separate interfaces for drawing from U[0,1), U[0,1], U(0,1), and U(0,1]. A not so good one might only provide just one of these four. There are some very small drawbacks to using not quite the right interface. For example, drawing longitude from U[0,360º] gives a small chance of doubling up on 0 versus 360º. Drawing sine(latitude) from U[-1,1) means you ruled out the North Pole.
Uhm, i have absolutely no idea what this means. I only know very basic math. And in case i was unclear in my first post, i want an even distribution, not centered to the poles.

Just thought of a blunt way of doing it. I peel the sphere in to say 24 sections and lay them out flat, then draw a rectangle around all of it and randomizes a number inside the rectangle, a simpel X and Y value, and those points that miss the peels simply doesn't count. It's not pretty but i it'll work. Unless of course someone has a easier method.

D H
Staff Emeritus
What I gave will spread the points out uniformly over the globe.

I'll keep it simple -- after saying what U(a,b) and the related terms mean. Colloquially, U(a,b) means "a random number drawn from between a and b". The "U" means uniform; there are many other distributions besides uniform. The difference between square brackets and parentheses just means whether the endpoints are included or excluded from the set from which the numbers are drawn.

So, what does this mean? Draw a random number from between -1 and 1. Take the inverse sine of this number and express the result in degrees. This is your latitude. Draw a random number from between 0 and 360º. This is your longitude. If you draw a whole bunch of latitude,longitude pairs this way and plot their locations you will see that this gives a nice uniform spread over the globe. As you have already discovered, drawing latitude directly from between -90º and 90º does not give a nice uniform spread.

It works fine. Got some help from my sister though. Here's what i (her) came up with in Excel for the latitude.

=ASIN((RANDBETWEEN(-1000;1000)/1000))/PI()*180

Thanks D H!

D H
Staff Emeritus
You're welcome.

BTW, =DEGREES(ASIN(RAND()*2-1)) would work quite nicely as well.

My version of Excel doesn't even have a RANDBETWEEN function.

uart
I know this is probably not much help to the OP, but it’s interesting to point out that DH’s method is mathematically equivalent to choosing latitude from a random distribution with a cosine probability density function,

$$f(\phi) = 1/2 \cos(\phi) \, : \, -\pi/2 \leq \phi \leq \pi/2$$

Since an element of surface on the sphere is (taking phi as latitude and theta as longitude) given by :

$$dS/r^2 = \cos(\phi) \, d\phi \, d\theta$$

and $\cos(\phi) d\phi$ is (for the given pdf) proportional to the probability that latitude is between $\phi$ and $\phi + d\phi$ then it follows that the probability of "hitting" a given element of surface on the sphere is proportional only to the SA of the element, no matter where that element of SA is located.

Last edited:
I'd probably ask for three random numbers in the range [-1, 1] and calculate the two angles of that vector, effectively projecting it onto a sphere. if you happen to get (0, 0, 0) then try again.

No polar bias doing it this way, though you need 3 random numbers per point rather than the minimum 2.

D H
Staff Emeritus
There's bias all over the place doing it this way!

In the vicinity of the projections onto the sphere of areas in the vicinity of
• The centers of the six faces of the cube: Too few points.
• The twelve edges of the cube: Too many points.
• The eight corners of the cube: Way too many points.

Ok I see, I had it very confused. Disregard my first post!

D H
Staff Emeritus