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
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:

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

http://www.stat.wmich.edu/wang/667/R/crapstheory.R


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
(craps2.png here)

In the graph of Winning Probability, the three curves cross at µ = 0, giving probability of winning (= 0.492929...). That is, the game is not fair when it's played with fair dice (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.