## Problem 45 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 45: Let us shuffle two decks of cards and lay them out in two lines, one over the other. On average, how many cards will "line up" with themselves (ie: the 3 of clubs over the 3 of clubs)?

#!/usr/bin/env ruby
TRIALS=10000
deck = (0..51).to_a
# We shuffle the deck, then shuffle another. We then walk the
# two arrays together, looking for matches.
match = 0
TRIALS.times do
upper = deck.shuffle
lower = deck.shuffle
upper.each_with_index do |u_i, i|
l_i = lower[i]
match += 1 if l_i == u_i
end
end
puts "Out of #{TRIALS}, #{match} cards matched."
puts "That gives us an expected number of matches as: "
puts " #{match.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.