The Game of Craps -- A Fair
Game?
A simplied version of the game of craps is described as follows:
a pair of dice are rolled by a player
- if the sum of the dice is either 7 or 11 then the player wins
immediately;
- if the sum of the dice is either 2, 3, or 12 then the player loses
immediately;
- if the sum is one of the game points 4, 5, 6, 8, 9, or 10 then
the pair of dice are rolled repeatedly until either the same game point appears
(wins!) or a sum of 7 appears (loses)
It can be shown that, given that a pair of fair dice are used, the game
is not fair! In fact, the probability
of winning the game in such a case is 49.2929...%
(below 50%!) The following is to investigate the game of craps if we allow
the pair of dice be shaved in like manner in that:
- first note that the points on two opposite sides sum to 7, that
is 3-4, 2-5, and 1-6 are the three pairs of opposites
- shave two opposite sides so that, for example if 3-4 sides are
shaved, P(T=3) = P(T=4) = (1/6) + 2µ, and P(T=1) = P(T=6) = P(T=2) = P(T=5)
= (1/6) - µ, where T is the sum of the dice and µ is the shaved amount. Here
we allow a negative shaved amount which means actually the opposite of shaving
-- makes 3-4 sides fatter. A positive shaved amount makes the dice thin
on 3-4 sides.
The function we use in R to
compute the probability of winning (in addition, the expected number of rolls
per round of the game) is craps.theory which can be downloaded from
or you can source the above R code directly within R by furnishing its URL
to the R command source.
Comprehensive formulas can be derived:
P(win) = p7 + p11 + p42/(p4+p7)
+ p52/(p5+p7) + p62/(p6+p7) + p82/(p8+p7) + p92/(p9+p7) + p102/(p10+p7)
E[rolls] = 1 + p4/(p4+p7) + p5/(p5+p7) + p6/(p6+p7) + p8/(p8+p7)
+ p9/(p9+p7) + p10/(p10+p7)
where pi is the probability of obtaining a sum of i in a single roll of the dice.
> objects() # show user's folder
character(0)
> # A source-able version of this page can be found in
> # http://www.stat.wmich.edu/wang/667/R/craps2.R
containing
> # all commands below
> s667Rsource <- "http://www.stat.wmich.edu/wang/667/R"
> source(paste(s667Rsource,'crapstheory.R',sep='/'))
> objects() # show user's folder now
[1] "craps.theory" "s667Rsource"
> save.image()
# save CURRENT image
> x <- seq(-1/12,1/6,1/600) # seqUENCE of various amounts of shaving
> runs <- p <- matrix(0,length(x),3) # P(win)'s and
E[runs]'s
> for(j in 1:3) for(i in 1:length(x)){ # for each shaved side and amount
+ y <- craps.theory(shaved=x[i], side=j) # find P(win) &
E[runs]
+ p[i,j] <- y$Pwin
+ runs[i,j] <- y$Eruns
+ }
> pdf(file="a:/craps2.pdf",width=7,height=4,
+ pointsize=11) # open a graphic device, in this case, PDF
pdf::a:/craps2.pdf
2
> par(mfrow=c(1,2), # 1 ROW, 2 COLUMNS mULTIPLE fIGURES, row-WISE
+ mar=c(4,4,3.1,1), # LINES OF BOT,
LEFT, TOP, RIGHT marGINS
+ oma=c(2.1,0,2.1,0)) # LINES OF
BOT, LEFT, TOP, RIGHT oUTER maRGINS
>
> matplot(x,p[,3:1],type="l",lwd=2,xlab=expression(mu),ylab="p",
+ main="Winning Probability") # lINE-TYPE matRIX plot
> legend(-0.07,0.65, legend=paste("side",3:1), lty=1:3, col=1:3, lwd=2)
> abline(h=0.5, lty=5, col="blue") # hypothetically fair game should
be
>
> matplot(x,runs[,3:1],type="l",lwd=2,xlab=expression(mu),ylab="tosses",
+ main="Expected Tosses")
> legend(-0.05,2.3, legend=paste("side",3:1), lty=1:3, col=1:3, lwd=2)
> abline(h=craps.theory()$Eruns, lty=5, col="purple")
> text(par('usr')[1], craps.theory()$Eruns, xpd=T, adj=c(1.2,1.2),
+ label="dice")
> text(par('usr')[1], craps.theory()$Eruns, xpd=T, adj=c(1.2,-0.2),
+ label="fair")
> mtext(side=3,outer=T,line=0.5,text="Game of Craps",cex=2)
> mtext(side=1,outer=T,line=0.5,text="shaved evenly on opposite sides")
> dev.off()
# (CLOSE) off GRAPHICAL devICE
null
1
In the graph of Winning Probability, the three curves cross at µ = 0,
giving probability of winning (= 0.492929...). That is, (what?). With suitable
amount of identical shaving on 3-4, 2-5, or 1-6 sides of the dice, the game
can be made fair. A PDF version is also available
in craps2.pdf.