Deuces wild???
As a baseball loving youth, I remember with great fondness watching and listening to baseball as called by the voice of baseball, Vin Scully, who is unquestionably one of the greatest baseball announcers.
One thing I can always remember him saying during his calls was “deuces wild”, which he used to describe a situation that occurs with a count of 2 balls, 2 strikes, and 2 outs.
So, I figured I would take a look at the raw statistics and see how often the deuces wild situation actually came up. Here is the code from my Program.cs file:
using System; using System.Collections.Generic; using System.Linq; namespace RetrosheetReader { class Program { static List<Team> teamList; static List<Player> playerList; static List<Event> eventList; const string DATA = "c:\\baseball_data\\"; static void Main(string[] args) { Console.WriteLine("Retrosheet Reader"); Console.WriteLine(); teamList = Team.GetTeamList(DATA); playerList = Player.GetPlayerList(DATA); eventList = Event.GetEventList(DATA); Console.WriteLine("Number of teams: " + teamList.Count().ToString()); Console.WriteLine("Number of players: " + playerList.Count().ToString()); Console.WriteLine("Number of events: " + eventList.Count().ToString()); int[, ,] pitchCount = new int[4, 3, 3]; int balls, strikes, totalPitches; totalPitches = 0; foreach (var ev in eventList) { balls = 0; strikes = 0; foreach (char c in ev.pitchSequence) { if (Functions.IsBallOrStrike(c)) { if (balls < 0 || balls > 3) { Console.WriteLine("Illegal number of balls (" + balls.ToString() + ") in pitch sequence " + ev.pitchSequence); } else { pitchCount[balls, strikes, ev.outs]++; totalPitches++; if (Functions.IsStrike(c)) { if (strikes == 2) { if (!Functions.IsFoul(c)) strikes++; } else strikes++; } else { balls++; } } } } } Console.WriteLine("Total pitches: " + totalPitches.ToString()); for (int o = 0; o < 3; o++) for (int s = 0; s < 3; s++) for (int b = 0; b < 4; b++) Console.WriteLine(String.Format("Total pitches on B{0}-S{1}-O{2}: {3,8} ({4,6:P})", b, s, o, pitchCount[b, s, o], pitchCount[b, s, o] * 1.0 / totalPitches)); Console.WriteLine(); Console.Write("Strike any key to end..."); Console.ReadKey(); } } } |
By the way, there is a new Functions.cs file in the project that contains utility functions, and I had to modify the Event.cs file to take into account the fact that the BEVENT application creates duplicate records for a batter if there is some kind of on-base event that happens in the middle of the at-bat, such as a stolen base or pick off.
The results? I ran the application with the 2008 season data, and found that there were 700,242 total pitches. The deuces wild situation happened on only 17,141 pitches, or 2.45%. Of course, the highest percentage occurred with 0 balls, 0 strikes, and 0 outs (the first pitch to any batters that bat in an inning before the first out is recorded, including the first batter of each inning) with 65,050 pitches, or 9.29%.
Here is the zipped up solution: