RANDOM.ORG is a true random number service that generates randomness via atmospheric noise. This page explains how RANDOM.ORG came about back in 1997 and how it has progressed through different stages to the form it has now.
RANDOM.ORG started during the summer of 1997 when I was working for a startup that was building an engine for online gambling. It was a small operation: just four guys constructing a prototype with the intention of raising money for further development. The engine was designed such that there was a core of functionality for which various game modules could be written. We implemented a prototype of the engine itself and a series of game modules that allowed you to play lottery, blackjack and slot machines in your web browser.
We realised early on that any serious gambling engine needed proper random numbers to support games involving real money. (If you want to know what can happen if you don't use true random numbers for your gambling system, read this article about the 1980s TV show Press Your Luck.) After reading up on randomness, we decided that a radio picking up atmospheric noise was a cheap and elegant way to gather entropy for random number generation. Also, since the generator would be in our office, the radio approach had the advantage over systems based on Geiger counters (which are quite popular also) that the radios did not require a radioactive source.
The first version of the random number generator was based on a $10 radio receiver from Radio Shack. We had a lot of fun buying that receiver. We knew that many radios, even the cheaper ones, came with noise filters and would only let you listen when you were actually tuned into a station. So when we got to the shop, we explained to the sales guy that we needed the cheapest radio he had, because we wanted our computer to listen to static. He didn't seem quite convinced about our sanity. We also insisted that he let us try out the radio in the shop so we could check the quality of the noise and verify that the thing really did not have a filter. Amazingly, he let us do this (kudos to Radio Shack; remember, this was a $10 sale) and when we heard the noise, everybody (I think there were three of us in the shop) jumped up and down ecstatically, quickly paid the $10 and left with the radio. We must have seemed pretty crazy.
Over the next couple of days, we wrote the first version of the generator. It was written in C/C++ and ran on Windows NT using a standard sound card, the brand of which I don't remember. While it was perfectly functional, it was a little crude in that it generated raw random bits and not the nice configurable intervals that you see on RANDOM.ORG today. However, it was fine for shuffling decks of cards for blackjack, picking lottery numbers and spinning wheels on our slot machine.
So what happened to the gambling engine? Technically, the prototype engine and associated architecture were really sound, but the company eventually decided not to go ahead with its gambling program, and so not much came of our efforts. In retrospect, we were probably doing this a little too early. This was in 1997, and we thought the online gambling market was going to take off in a year or two, but in reality it took much longer for that to happen. RANDOM.ORG is the only part of that project that survives today. My friends decided not to pursue the gambling project further and instead went off to start two successful companies: Pentia and Sitecore.
In September 1998, I had started doing a PhD in Computer Science at Trinity College, Dublin. My thesis topic was in the area of mobile computing and as such had very little to do with randomness, but since I had done most of the work on the generator the year before and really liked the idea of using atmospheric noise for generating random numbers, I decided it would be a waste if it would just be forgotten. So, I explained the idea to Vinny Cahill, who was the head of my research group (the Distributed Systems Group) and suggested we host the service there. Vinny was happy to support the idea, so over the next couple of months, I scavenged an old Sun SPARCstation that was standing around in our lab, rewrote the random number generator for the Solaris operating system and finally put together the first version of the RANDOM.ORG web site. This site went online in October 1998.
At the time, there were no public random number services that used atmospheric noise, but HotBits and Lavarand (the original Silicon Graphics version) already existed. So, why yet another? The most important reason is because it was fun to make. The second most important reason is that the existing services were mostly for educational purposes and for fun. My intention with RANDOM.ORG was certainly to build a service that would be educational and fun but also a service that would be useful for certain (non-critical) applications that needed random numbers. Since then, people have used the service for more things than I had ever thought would be possible, and the service has been updated many times to support much more serious applications than I had originally intended.
The picture shows the first RANDOM.ORG setup as it looked from 1998 to 2001. (However, the picture was actually taken in 2005.) The radio is a Hitachi transistor radio that I got for free because the tape recorder was broken. Since the whole setup was placed on a shelf in our postgraduate research lab, and I was a little worried that someone might mess with the radio out of accident or curiousity, I placed a post-it note on the radio asking people not to touch it.
Just left of the radio, you see the rear panel of the Sun SPARCstation I was using. I have no idea how fast it was, but it didn't seem fast, not even then. However, it did have 96 MB of memory, which was a lot at the time, so it could easily run the software, and it also had a built-in sound card and was therefore easy to connect to the radio. The machine ran the Solaris operating system, which was incredibly stable and therefore perfectly suited for the purpose. On the very left in the picture, you see the 500 MB (yes, that's megabytes) SCSI disk that held the files. Behind the radio, you can just about make out the UPS, which was a later addition.
And the bottles? They are there because we have a tradition in the Distributed Systems Group that whenever you get a paper accepted at a conference or in a journal, you buy a bottle of Irish whiskey (or some other pleasant drink) and share it with the group to celebrate. As you can see from the photo, each bottle has a yellow post-it note that tells which conference or journal was involved and who was the person to get published.
In autumn 2000, the SPARCstation was starting to show signs of age, and I started looking for a new machine. Also, I had taken on Antonio Arauzo Azofra as a final year student in Computer Science to do a randomness-related project. His task was to implement a new and fancy statistics module, which was stable enough to be suitable for production deployment on RANDOM.ORG. He did this very well and also did a lot of really good work in relation to configuring the ‘new’ server – a Siemens Scenic 300 PC I had scavenged. Antonio convinced me to use Debian GNU/Linux (I was rather bent on Red Hat at the time), then installed the hardware and software and even helped maintain it after he had finished his studies in Dublin and returned to Spain to start a PhD.
From the summer of 2001, RANDOM.ORG operated with the Siemens PC in a dual-radio setup. The heart of the PC was a Pentium III CPU clocked at 500 MHz. Initially, the machine had 128 MB of memory, but it was later upgraded to 384 MB. The machine was equipped with three Cirrus Logic Crystal CS4281 sound cards and two FM tuners (one was a Sony, the other a Tensai) that I bought second-hand for (Irish) £30 (around €40) at the Blackberry Market in Dublin. The picture below shows the setup. The Siemens PC is the one lying horizontally on top of the other two, and the two radios are stacked on top. Although the setup was no longer placed in a postgraduate lab but in my personal office, I was still concerned about people (e.g., cleaners) accidentally interferring with the radios and disrupting the service, and I therefore placed another sign (covering the radios) asking people to be careful.
The operating system that I used on this setup was Debian GNU/Linux 3.0 (‘Woody’), which was amazingly stable. (It was the first time I used Debian, and I'm still a convert – kudos to the Debian team for their excellent work.) The generator was configured to sample the noise from the radios as an audio stream of 8-bit samples in mono at a sampling rate of 8 Khz. This yielded a total of 1,500 random bits per second per radio, so a total of 3,000 bits per second with the two radios.
During the period from early 2007 to late 2009, RANDOM.ORG used two different hardware configurations. For most of 2007, it ran on a Dell Dimension 4550, which was kindly donated by René Meier and Jim Dowling from the Digital Business Ecosystem (DBE) research project. This machine had a Pentium 4 CPU clocked at 2.53 GHz and was equipped with 1 GB memory. I equipped it with three CM8738 sound cards from C-Media Electronics and the same two FM tuners that I used from 2001-2007, but also added an Akai tuner that I bought for DKK100 (€12) in a second-hand shop in Copenhagen.
In late 2007, I switched the Dell Dimension for an IBM eServer with 1,280 MB memory and a Pentium III CPU clocked at 1.266 GHz. Despite having a lower CPU spec than the Dimension, the eServer could easily keep up with demand, and it had the advantage that it was a genuine server grade machine and therefore had SCSI disks, which were well suited for the purpose. The sound cards and radios were the same as for the Dimension setup.
(todo: photo of the IBM setup here)
This setup generated about 3,000 bits per second per radio. It still used Debian GNU/Linux but was upgraded to versions 3.1 (‘Sarge’) and 4.0 (‘Etch’) as they became available. These versions of Debian GNU/Linux were as stable their predecessors and quite a bit easier to configure than earlier releases of Debian. Highly recommended.
In late 2009, RANDOM.ORG underwent a major restructuring in response to the increasing number of clients and their need for good reliability and performance. There is now a distributed configuration in which a number of nodes in different geographic locations generate randomness, subject it to statistical tests and then stream the distilled random bits to a cloud hosting service from which the RANDOM.ORG services run. This new architecture has increased the reliability as well as the performance of the service and helps make RANDOM.ORG suitable for the serious applications (e.g., lottery drawings) that are now offered. Tried and true, the random numbers are still generated with atmospheric noise, but the hardware and software used today is a long way from the $10 receiver from Radio Shack that started it all back in 1997.
RANDOM.ORG is still undergoing exciting developments many cool projects are in the works. For the latest updates, check out the news page or simply sign up for the newsletter (and get a chance to win iPods).