суботу, 24 травня 2008 р.

Monty Hall problem



# Парадокс Монті Холла (Monty Hall) - одна з відомих задач теорії ймовірності, рішення якої, на перший погляд
# суперечить здоровому глузду. Завдання формулюється як опис гіпотетичної гри, заснованої на американському телешоу
# «Let’s Make а Deal», і названа на честь ведучого цієї передачі. Найбільш поширене формулювання цього завдання,
# опубліковане в 1990 році в журналі Parade Magazine, звучить таким чином:
#
# Уявіть, що ви стали учасником гри, в якій вам потрібно вибрати одну з трьох дверей.
# За однією з дверей знаходиться автомобіль, за двома іншими дверима — кози. Ви вибираєте одну з дверей, наприклад, номер 1,
# після цього ведучий, який знає, де знаходиться автомобіль, а де — кози, відкриває одну з дверей, що залишилися,
# наприклад, номер 3, за якою знаходиться коза. Після цього він питає вас, чи не бажаєте ви змінити свій вибір і вибрати двері номер 2.
# Чи збільшаться ваші шанси виграти автомобіль, якщо ви приймете пропозицію ведучого і зміните свій вибір ?
#
GAMES = 10000
DOORS = [1, 2, 3]
stay_win = switch_win = 0

def choice(arr)
arr[rand * arr.length]
end

puts "Граємо #{GAMES} ігор..."
GAMES.times {
prize_door = choice(DOORS)
chosen_door = choice(DOORS)
opened_door = choice(DOORS - [prize_door, chosen_door])
switch_door = choice(DOORS - [chosen_door, opened_door])
stay_win += 1 if chosen_door == prize_door
switch_win += 1 if switch_door == prize_door
}

puts "Відсоток виграшів із стратегією зміни вибору становить: #{(switch_win.to_f / GAMES) * 100} %"
puts "Відсоток виграшів із стратегією не зміни вибору становить: #{(stay_win.to_f / GAMES) * 100} %"


Граємо 10000 ігор...
Відсоток виграшів із стратегією зміни вибору становить: 66.23 %
Відсоток виграшів із стратегією не зміни вибору становить: 33.77 %