Download presentation

Presentation is loading. Please wait.

Published byClara Wilcox Modified about 1 year ago

1
Monte Carlo Simulation of the Craps Dice Game Sencer Koç

2
Basics 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.

3
Objective 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.

4
Craps Game Win if PointLose if 7 (Out 7)Continue otherwise Win if PointLose if 7 (Out 7) Win if 7, 11Lose if 2, 3, 12Set Point Come Out Roll

5
Questions 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?

6
Simulation 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)*6+0.5) simulates a single roll of a pair of dice. The following MATLAB code simulates M games.

7
MATLAB Code M = 10; % Number of simulations lost = 0; win = 0; gamelength = zeros(1,M); disp(' win loss gamelength') data = zeros(10000,3); for k=1:M stop = 0; curr_gamelength = 1; x = sum(round(rand(1,2)*6+0.5)); if (x==7) | (x==11) win = win+1; stop = 1; elseif (x==2) | (x==3) | (x==12) lost = lost+1; stop = 1; else point = x; end

8
MATLAB Code (Continued) while ~stop curr_gamelength = curr_gamelength+1; x = sum(round(rand(1,2)*6+0.5)); if (x==7) lost=lost+1; stop = 1; elseif (x==point) win = win+1; stop = 1; end gamelength(k) = curr_gamelength; disp(sprintf('%8.0f %8.0f %8.0f '...,win, lost, curr_gamelength)) data(k,:) = [win lost curr_gamelength]; end

9
Sample Simulation Trial win loss gamelength Program Output Total over 10 simulations win loss gamelength Summary Data

10
Generation 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))

11
Sample Simulations (M=1000) Trial P(win) P(loss) L

12
Now make N=1000 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: –res=zeros(1000,3);for ii=1:1000; mcscraps; res(ii,:)=[win/1000 lost/1000 mean(gamelength)];end;

13
Histograms Histogram of P(win) for 1000 trials. Histogram of L for 1000 trials.

14
Confidence Intervals

15
Exact The exact value of probability of win can be calculated by using the theory of Markov Chains

16
Final Note The game length is an exponentially distributed random variable, however its mean over N=1000 trials (as shown before) is approximately normally distributed (Central Limit Theorem)

Similar presentations

© 2017 SlidePlayer.com Inc.

All rights reserved.

Ads by Google