## Problem 9 of Monte Carlo solutions to Fifty Challenging Problems...

(This is another part of the Fifty Problems series, a set of example applications of Monte Carlo methods. In each post, I present source code which answers a probabilistic question using simulated models of the underlying system.)

Problem 9: What are the odds of winning in Craps (using only Pass Line bets)?
``` #!/usr/bin/env ruby # Modelling craps is weird. # We roll two dice and sum them. # # if they're 7 or 11 => immediate win # 2,3,12 => lose # else, roll is the "point" # player keeps rolling until: # point => win # 7 => lose # # So, what's the chance to win? TRIALS=500000 def roll d1 = 1 + rand(6) d2 = 1 + rand(6) return d1+d2 end def win() first_roll = roll() return true if (first_roll == 7 || first_roll == 11) return false if ([2,3,12].include?(first_roll)) point = first_roll while (true) do next_roll = roll() return false if 7 == next_roll return true if next_roll == point end end wins = 0 TRIALS.times do wins += 1 if win() end puts "After #{TRIALS} games, won #{wins}" puts "P(win) = #{wins.to_f/TRIALS.to_f}" ```

I've been coding my way through Fifty Challenging Problems in Statistics with Solutions. This post is a part of the Fifty Challenging Problems series.

This was brought to you by Josh Myer. He has other fun things at his homepage.