Seeding Random Number Generation
What makes random numbers truly random? To visualize the mechanism, here is an exercise: quickly think of a number, any number. What number came to mind? That number is very likely significant to you in some way: your age, a part of your telephone number, your street address number—something that you are either familiar with or just happened to see at that time. That number, in other words, was not randomly selected and is, therefore, likely to be repeated or predicted.
Fine, you might say. You want a random number? I will close my eyes and punch at keys randomly on my calculator. Surely that will result in a random number.
Probably not. If you examine the number closely, you will notice that some digits are repeated next to each other. That is natural: if you hit a key—say, 9—it’s likely that you will hit 9 again next because your finger was hovering in the general vicinity of the 9 key.
I hope you can see, after these simple thought-exercises, that it is quite difficult for a human being to come up with a truly random number. Similarly, a machine can’t just pull a number from thin air. There are several methods to achieve true randomness based on complex mathematical formulas that are beyond the scope of this book. The most common component of any random number generator is some randomizer found elsewhere, such as system time, which is guaranteed to be different between two points in time. This randomizer component, which is conceptually similar ...