oct 13
Chapter 9 : "simulation and design"
Discusses "top-down", "bottom-up", and "spiral"
(which is a bit of both) program design techniques.
The text does this with a racquetball simulation.
I'd like to do something similar as a class exercise, but with a problem that I like a bit better: craps.
As the book describes, we'll use a random number function to implement the dice :
def d6():
"""Return a random integer from 1 to 6 inclusive."""
from random import randrange
return randrange(1,7)
(Before going on, test this manually. Can the test be automated?)
The program I have in mind looks like this when it runs :
$ python craps.py
--- Estimated odds of winning at craps ---
How many games would you like to simulate? 100
Simulating 100 games ...
done.
Number of simulated wins: 38
Estimated odds of winning: 0.381
--- Estimated error ---
How many times would you like to repeat that series of 100 games? 10
Simulating 10 sets of 100 games ...
done.
Lowest estimated odds : 0.363
Highest estimated odds: 0.387
Error range = (high-low) = 0.024
And what I'd like us to investigate are several things,
besides just the programming itself:
- How do we think about designing a program to do this?
- In particular, where should we start?
- How confident are we that it's working correctly?
I've attached a copy of this program
from a previous iteration of this class.
And the one we did in class - though we
didn't finish/test the statistics - is also attached.