モンティホール
モンティホール問題自分でも書いてみた。
ドアを変えない場合の当たりの数を出す。当然はずれは変えてれば当たっていた数。確かに変えた方が2倍当たる。
# -*- coding: utf-8 -*- def setup @doors = Array.new(3) { :goat } @doors[rand(3)] = :car end def select @selected_index = rand(3) end def monty_select @doors.each_with_index do |door, index| next if (index == @selected_index) || (door == :car) @monty_selected_index = index end end def monty_hall? setup select monty_select return false if @doors[@selected_index] == :goat true end count = 1000000 result = { :fix => 0, :change => 0} (1..count).each { monty_hall? ? result[:fix] += 1 : result[:change] += 1 } puts "ドアを変えない(実施回数: #{count})" puts "当たり: #{result[:fix]}" puts "はずれ: #{result[:change]}"
結果
ドアを変えない(実施回数: 1000000) 当たり: 332916 はずれ: 667084