I'd like to take part in the fun, maybe put my five dollars into the office pool, but I just don't know enough about the teams to make an informed decision on my own March Madness bracket. So a few years ago, I found another way: I wrote a little program to do it for me.
I shared a version of that program a few weeks ago as "March Madness" in a shell script. (See also Bash Shell Script: Building Your March Madness Bracket at Linux Journal.) I've been using this method for a few years now. In brief, you can borrow the D16 die-roll method from tabletop role-playing games to fill out a "March Madness" basketball bracket.
The point of using a script to build your NCAA March Madness basketball bracket isn't to take away the fun of the game. On the contrary, since I don't have much familiarity with basketball, building my bracket programmatically allows me to participate in the office basketball pool. It's entertaining without requiring much familiarity with sports statistics. My script gives me a stake to follow the games, but without the emotional investment if my bracket doesn't perform well. And that's good enough for me!
How did I do this year? I generated a sample bracket for my blog and another bracket for the article I wrote at Linux Journal. Let's break down the results based on each article.
In the first round of the NCAA March Madness, you start with teams 1–16 in four regions, so that's 64 teams that compete in 32 games. In that "round of 64," my shell script correctly predicted 23 games. That's not a bad start.
March Madness is single-elimination, so for the second round, you have 32 teams competing in 16 games. My shell script correctly guessed 9 of those games. Still not too bad.
But things fell apart for me in the third round. This is the "Sweet Sixteen" where 16 teams compete in 8 games, but my script only predicted 3 of those games. My East bracket was a complete loss.
And in the "Elite Eight" round, my script didn't predict any of the winners. That wrapped up my brackets.
The sample run I shared in my Linux Journal article turned out not to be so great. Starting at the first "round of 64," my script correctly predicted 19 of the 32 games. A poor start.
My bracket didn't have much to work from in the "round of 32" where 32 teams compete in 16 games. With a weak first round, it's not surprising my second round only correctly predicted 7 correct outcomes.
Going into the "Sweet Sixteen," my shell script didn't fare much better. Only 4 correct predictions here. My West bracket was completely correct, but my East bracket was wiped out.
The "Elite Eight" round eliminated my brackets altogether. No correct predictions, ending my brackets.
Following the standard method for How to score March Madness brackets, each round has 320 possible points. In round one, assign ten points for each correctly selected outcome. In round two, assign twenty points for each correct outcome. And so on. From that, the math is pretty simple.
Ah well. I'm not really bothered by my brackets. If you recall, I said this about the script's output:
Every time you run the script, you will generate a fresh NCAA March Madness basketball bracket. It's entirely random, based on a D16 prediction similar to Dungeons and Dragons, so each iteration of the bracket will be different. In my experience, the D16 prediction works pretty well for the first few rounds, but often predicts the #1 team will make it to the fourth round. It's not a very scientific method, but I'll share that my computer-generated brackets usually fare well compared to others in my office.
So I expected my script to do well in the first few rounds, but fail to correctly predict the championship winner. But I had a lot of fun following the games.
I'm curious if anyone out there used the shell script to fill out your own NCAA March Madness brackets. How did your brackets fare this year?
image: Wikimedia (public domain)