見出し画像

数学マンガ 「モンティ・ホール問題」その3 ディスカッション

前回その2「解答編」のあらすじ:モンティ・ホール問題を解説し終えて得意げなワシマンですが…。ディスカッションが続きます。

画像1

それではワシマンの実験結果を見てみましょう。(実験に使用したプログラムはページ末尾を参照)

画像2

画像3

その1」へ戻る…?
お後がよろしい、ということにして、おしまい!

Appendix

実験で使用したプログラム「monty_hall.py」

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import random
import sys

NUMBER_OF_DOORS = 3

def choose_one_randomly(doors):
   return random.choice(doors)

def choose_rest(doors, chosen):
    return [d for d in doors if d != chosen]

def play_one_game(strategy='switch'):
   doors = range(NUMBER_OF_DOORS)
   # ①準備
   #   司会がランダムに1つ正解のドアを選択する
   #   - 正解のドア: money_door (賞金)
   #   - ハズレのドア: blank_doors とする
   money_door = choose_one_randomly(doors)
   blank_doors = choose_rest(doors, money_door)

   # ②回答者の1回目の選択
   #   回答者がランダムに1つドアを選ぶ
   player_door = choose_one_randomly(doors)

   # ③司会者からのヒント
   #   司会がハズレのドアからランダムに1つドアを開ける (回答者が選択しているドアを開けてはいけない)
   open_door = choose_one_randomly(
    choose_rest(blank_doors, player_door) # length can be 1 or 2
   )
   closed_doors = choose_rest(doors, open_door)

   # ④回答者の2回目の選択
   #   回答者は stay or switch を選択できる
   #   - stay: 先ほどの player_door から変更しない
   #   - switch: もう一方のドアに変更する
   if strategy == 'switch':
       player_door = choose_one_randomly(
        choose_rest(closed_doors, player_door) # length is 1
       )
   else:
       pass
   #sys.stderr.write("---money_door: %s, player_door: %s, open_door: %s\n" %(money_door, player_door, open_door))
   return money_door == player_door

def iterate(n, strategy):
   success = 0
   for i in range(1, n+1):
       success += play_one_game(strategy)
       ratio = float(success) / float(i)
       sys.stderr.write("---%ith try, success %s\n" %(i, success))
       print("%i,%f" %(i, ratio))

def main():
   strategy = 'switch'
   n = 1000

   args = sys.argv
   if (len(args) >= 3):
       strategy = args[1]
       n = int(args[2])
   iterate(n, strategy)

if __name__ == '__main__':
   main()

使い方

# switchだけ1000回連続で実行
python monty_hall.py switch 1000

# stayだけ1000回連続で実行
python monty_hall.py stay 1000

数学マンガ「モンティ・ホール問題」は以上でおしまいです。最後まで読んでいただきありがとうございました!

この記事が気に入ったらサポートをしてみませんか?