Problem 6 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.)
What is the expected loss per unit stake in Chuck-a-Luck? Only single-die bets are allowed.
#!/usr/bin/env ruby
TRIALS=50000
payout = 0
# First off, the game rules. If we get one die right,
# it pays out 1 times our stake. If we get two dice,
# twice the stake, and three dice yields three times
# the stake. This function returns the multiplicand
# of our stake; if we lose, it returns 0.
#
def win(bet)
ret = 0
d1 = 1+rand(6)
d2 = 1+rand(6)
d3 = 1+rand(6)
ret += 1 if (d1 == bet)
ret += 1 if (d2 == bet)
ret += 1 if (d3 == bet)
ret +=1 if ret > 0 # we get our stake back, too
return ret
end
# So, now, we play the game. Since the dice are fair,
# all numbers are equally likely, and we can bet on any
# number we choose each game. To simplify things,
# we'll always bet on 3.
TRIALS.times do
payout += win(3) # we bet 1 unit on rolling a three
end
t = TRIALS # make the prints fit.
puts "After #{t} rounds of Chuck-a-Luck, we spent $#{t}"
puts "We got back $#{payout}. Thus, our expected loss"
puts " per unit stake is $#{(TRIALS-payout)/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.