Random Numbers

There are tons of masters, PhD thesis written on generating uniform (as in uniform distribution) random numbers using a computer.

The problem with generating random numbers is finding a true source of entropy. The usual rand() or RND function found in most languages use the system clock as the source of entropy. This is perhaps the worst method of generating a random number; the reason being the change of entropy is predictable (because the change of time is predictable — the millisecond counter changes 1/1000 sec). One technique (a technique used by PGP) uses other random sources from your computer. For instance mouse movements, thread counts or whatever else.

The above techniques works wonders if you only want to generate small sets of random numbers. If you want to generate larger sets then you start to see recognizable patterns (this happens perhaps because you start of have predictable mouse movements, predictable thread counts and so on).

I am working on a project that requires large sets of random numbers with low levels of predictability (note this level is not to be confused with the entropy value that is often paired with random numbers; what I am referring to here is the chi-square value).

So as I was researching around the internet I came across this web-site: www.random.org. All they do is produce random numbers.

The way the random.org random number generator works is quite simple. A radio is tuned into a frequency where nobody is broadcasting. The atmospheric noise picked up by the receiver is fed into a Sun SPARC workstation through the microphone port where it is sampled by a program as an eight bit mono signal at a frequency of 8KHz. The upper seven bits of each sample are discarded immediately and the remaining bits are gathered and turned into a stream of bits with a high content of entropy. Skew correction is performed on the bit stream, in order to ensure that there is an approximately even distribution of 0s and 1s.

Recently they added a SOAP interface to their application; so what I will do is use their SOAP interface to receive some data and use that for my application.

I will post the link to the resulting page as soon as I am done.

Leave a Reply