Bad Dinosaur!

You Should Check This Out

CollegeJobConnect | Better Undergraduate Recruiting

Friday, November 13, 2009

Male / Female + Solution

Math question:

"In a country in which people only want boys, every family continues to have children until they have a boy. If they have a girl, they have another child. If they have a boy, they stop. What is the proportion of boys to girls in the country?"

Please post your solution + answer in the comments. GO!


----- Solution -----

Thank you to all that emailed me and posted in the comments! The first responder with the correct answer was Gary H., however, he volunteered to disqualify himself because he had seen the question before (what a noble man!).

The winner is Paul R. A case of Snuggies is on it's way to you as your prize.

Honorable mention goes out to Dan D and Adam C. No, no honorable mention goes to Bad Dinosaur, he didn't even play.

Here it is: we assume that the probabilities of having a boy vs girl is 50%. Next, assume there are N families, so there will be N boys at the end (because the families keep going until they have a boy. N families. N boys). From the girl side, we can see the following:

round 1: N/2 have a boy and stop, N/2 have a girl, so N/2 girls so far
round 2: N/2 families left, 50% have a girl, so N/4 (0.5*N/2 = N/4)
round 3: N/4 families left, 50% have a girl, so N/8 (0.5*N/4 = N/8)

You get the idea. There will be an "infinite" sum equal to:

N/2 + N/4 + N/8 ... N / infinity = N


Note: this follows from Series basics (read more here).

So number of boys equals N, and number of girls equals N, the ratio is N:N or 1:1

The Monte Carlo simulation supports these findings (thanks to Paul R. for the lovely ruby code):
Example output:

Family problem, 1000000 trials:

997496 girls, 1000000 boys
1.997496 children per family
0.997496 girls per boy


#!/usr/bin/env ruby
# usage: ./family.rb [trials]

# Family problem, 1000000 trials:
#
# 997496 girls, 1000000 boys
# 1.997496 children per family
# 0.997496 girls per boy
#
# Ran in 15.508096s

class Array
def rand # A spoonful of sugar helps the medicine go down
self[(length*Kernel.rand).floor]
end
end

class Family
def initialize(complete = true)
@children = { :boy => 0, :girl => 0 }
complete! if complete
end

def boys
@children[:boy]
end

def girls
@children[:girl]
end

def have_child!
@children[[:boy, :girl].rand] += 1
end

def complete!
have_child! until complete?
end

def complete?
boys == 1
end
end

iterations = if ARGV.length > 0
ARGV[0].to_i
else
1000
end

puts "Family problem, #{iterations} trials:"

started = Time.new

children = { :boys => 0, :girls => 0 }
iterations.times do
f = Family.new
children[:boys] += f.boys
children[:girls] += f.girls
end

family_size = (children[:boys] + children[:girls]).to_f / iterations
ratio = children[:girls].to_f / children[:boys]

elapsed = Time.new - started

puts
puts "#{children[:girls]} girls, #{children[:boys]} boys"
puts "#{family_size} children per family"
puts "#{ratio} girls per boy"
puts
puts "Ran in #{elapsed}s"

2 comments:

Gary said...

Friday Funnies are a lot more fun than Friday Mathies

Paul said...

Monte Carlo says 1:1 :)

http://gist.github.com/234913

Post a Comment

Post a comment ...