Title: Monte Carlo Simulation of the Craps Dice Game
1Monte Carlo Simulationof the Craps Dice Game
2Basics
- The player rolling the dice is the "shooter".
Shooters first throw in a round of Craps is
called the Come Out roll. If you roll a 7 or 11,
you win and the round is over before it started. - If you roll a 2, 3, or 12 that's a Craps and you
lose again, it's over before it started. - Any other number becomes the Point. The purpose
of the Come Out roll is to set the Point, which
can be any of 4, 5, 6, 8, 9 or 10.
3Objective
- The basic objective in Craps is for the shooter
to win by tossing the Point again before he
tosses a 7. That 7 is called Out 7 to
differentiate it from the 7 on the Come Out roll. - If the Point is tossed, the shooter and his
fellow bettors win and the round is over. If the
shooter tosses Out 7, they lose and the round is
over. - If the toss is neither the Point nor Out 7, the
round continues and the dice keep rolling.
4Craps Game
5Questions
- What is the probability that the roller wins?
- Note that this is not a simple problem.
- The probability of win at later rolls depends on
the point value, e.g., if the point is 8,
P(8)5/36 (2,6,3,5,4,4,5,3,6,2) and if
the point is 10, P(10)1/36 (5,5). - How many rolls (on the average) will the game
last?
6Simulation and MATLAB
- We will simulate the craps game on a computer
using MATLAB. - The command rand(1)
- Uniformly distributed between 0 and 1
- round(rand(1,2)60.5)simulates a single roll of
a pair of dice. - The following MATLAB code simulates M games.
7MATLAB Code
M 10 Number of simulations lost 0 win
0 gamelength zeros(1,M) disp(' win
loss gamelength') data zeros(10000,3) for
k1M stop 0 curr_gamelength 1
x sum(round(rand(1,2)60.5)) if (x7)
(x11) win win1 stop 1 elseif
(x2) (x3) (x12) lost lost1
stop 1 else point x end
8MATLAB Code (Continued)
while stop curr_gamelength
curr_gamelength1 x sum(round(rand(1,2)
60.5)) if (x7)
lostlost1 stop 1 elseif (xpoint)
win win1 stop 1 end
end gamelength(k) curr_gamelength
disp(sprintf('8.0f 8.0f 8.0f '...
,win, lost, curr_gamelength)) data(k,)
win lost curr_gamelength end
9Sample Simulation
Program Output
Trial win loss gamelength 1
0 1 2 2 1
0 7 3 1 0
3 4 0 1 2
5 1 0 5 6
0 1 10 7 1
0 8 8 0 1
2 9 0 1 4
10 1 0 1
Summary Data
Total over 10 simulations win loss
gamelength 5 5 4.4
10Generation of Useful Data
- Remember we are using a random number generator!
- We also need a larger sample size. We will run
the problem for many more games! - Let us now try 1000 games and divide wins and
loss by M to determine the probabilities
(comment out the disp commands to suppress output
of data). - Also evaluate the mean of gamelengths.
- Our point estimators are
- P(win) data(1000,1)/1000
- P(loss) data(1000,2)/1000
- L mean(data(,3))
11Sample Simulations (M1000)
Trial P(win) P(loss) L 1
0.479 0.521 3.646 2
0.496 0.504 3.774 3
0.497 0.503 3.351 4
0.467 0.533 3.450 5
0.512 0.488 3.386 6
0.485 0.515 3.435 7
0.480 0.520 3.476 8
0.494 0.506 3.591 9
0.492 0.508 3.466 10
0.495 0.505 3.312
12Now make N1000 such trials!
- This will take some time (about 5 minutes) since
the MATLAB code is written for readability and
not for speed! - You may use the following command line
- reszeros(1000,3)for ii11000 mcscraps
res(ii,)win/1000 lost/1000 mean(gamelength)en
d
13Histograms
Histogram of P(win) for 1000 trials.
Histogram of L for 1000 trials.
14Confidence Intervals
15Exact
The exact value of probability of win can be
calculated by using the theory of Markov Chains
16Final Note
- The game length is an exponentially distributed
random variable, however its mean over N1000
trials (as shown before) is approximately
normally distributed (Central Limit Theorem)