The Goal:
As a part of a course, we had to create a Bingo simulator that was capable of running hundreds of thousands of games of Bingo and record the statistics.

Project Description:
My Bingo simulator generates a five by five matrix of numbers and replaces called numbers with a zero. After each call, the program checks if there exists five zeros in a row, stopping the game and marking whether it was a vertical, horizontal, or diagonal line of five zeros that won. Then it moves onto the next game.

What went right:
The matrices worked very well and the method of assessing the presence of zeros proved quick. The algorithm itself works very well and it is able to perform 1,000,000 games in a relatively short span of time (the results of which are shown below.

What went wrong:
The code was not very modular and proved difficult to scale beyond its hard coded features. A later version of my Bingo simulator for a different assignment attempted to fix this, but it did not fix the underlying problems and was buggier than the original.
The way the standard deviation was calculated was also somewhat confusing and never fully made sense.

Outcome:
The process of the game running was a success, and it displayed all of the statistics it needed to (though I still doubt that the standard deviation was calculated correctly). I learned from this project the need to think about modularity in programming from the very beginning and that going backwards and attempting to make things modular after the fact tends to lead to cascading failures.




