Every year I enter an NFL pick 'em league. It's a lot of fun, even when I don't watch any football at all, just because of the characters in the league. It works on a head to head format: there are 32 teams, one for each team in the NFL. Your schedule mimics the team you represent.
For several years now, I have been the Falcon. Or, more precisely, the "Faulty" Falcon, in that I have the unerring ability to turn the most obvious game of the week into the upset of the week by virtue of my picking them. It got so bad one year that I started writing a column now and again, putting my "lock of the week" on display only to see it come crashing down week in and week out.
This year, however, a number of factors have conspired to keep me from paying enough to attention to the NFL to make educated picks of any kind. I've been watching a lot of soccer since the World Cup, plus the Phils are in the playoff hunt, and I like both of those sports better than the NFL.
So since my picking ability seems pretty random anyway, why not make it as truly random as possible?
Now, random number theory is interesting stuff as it relates to computers. Obviously, computers aren't any good whatsoever at producing random results. In fact, they're designed to do exactly the opposite. So in order to produce near random results, mathematicians have come up with some interesting algorithms that computers can use.
However, these algorithms all rely on a seed number to produce their results... a starting point for the rest of the equation to work with. If you use the same seed number twice, you'll get the same "random" number. So a random number algorithm is only as good as the method by which you obtain your seed number.
In most cases, programmers will just use something like the system clock, since it is going to be different every time. Although good enough for government work, this is not a real great way to do things because the time is predictable, making your "random" results predictable.
So people have come up with all kinds of weird ways to produce "entropy", the unordered stuff from which precious randomness can be gleaned. People have done some neat stuff using things like lava lamps to produce entropy.
In my case, I decided to go with random.org, which uses the following approach (from website):
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.
Yeah. Whatever, sounds pretty random to me.
Using a quick little .NET script, I make repeated HTTP requests to random.org, getting some seed numbers, all in the eventual pursuit of a 1 or a 2 (or, more accurately, up to 16 ones and twos) to make my picks.
I call the little app "F.A.U.L.T.Y.", or the "Falcon's Automated and Unnecessarily Lengthy Teaminator for Yeager" (props to my coworker for the assist on the acronym).
Ah yes, technology and the NFL. What could possibly go wrong?
Edit: I've actually added a simple XML config file, which can contain a schedule of play. You can enter what week you want to get the picks for and it will spit them out in a nice format. Hmm... I probably should stop wasting time on this.