モンティホール・アウトレイジ エピローグ

python
python

モンティホールの問題をいじりまくった。
あらためて面白い設定だな、これ

過去記事:
モンティ・ホール問題をPythonで検証する ~モンティホール・アウトレイジ ep 1~
モンティ・ホールの問題を100個のドアで説明するの納得いかない~モンティホール・アウトレイジ ep 2~
確率操作したモンティ・ホール問題をPythonで検証する~モンティホール・アウトレイジ ep 3~

過去3回に渡って、モンティ・ホールの問題をやってきました。
モンティ・ホールとPythonって単語を書きまくりましたが、「モンティ・パイソン」って書いてしまったこと数え切れず・・・(イギリスの超有名コメディです)

開始当初は具体的にどうしていくか決めず、とりあえずアウトレイジに攻めるということでスタートさせましたが、面白い結果になってよかった。

では、振り返ってみましょう。

1.戦いの軌跡

第1回では、ノーマルの状態のモンティ・ホールの問題に取り組みました。
第2回では、何も考えないヤツを出したり、ドアを増やしたりしました。
第3回では、確率操作をして、何も考えないヤツに戦略を考えさせました。

この3回、アウトレイジにルールをぶっ壊していきましたが、ある意味ずーっとモンティの手のひらの上で転がされ続けてました。それこそ、この問題の本質に近づけたと思います。

知ってても直観と真実が合わない、人間の直観もあてにならないというのを改めて実感できましたね。

2.今回使ったテクニック

今回使ったテクニックを挙げてみましょう。

①:try / exceptによるエラーの処理
以前はif構文でエラーが発生しないように回避していましたが、今回はtry / exceptでエラーを回避してみました。エラーパターンをあらかじめ確かめるので、なかなか勉強になります。
まだ、使いこなせてないので、またそのうち登場すると思います。

②:ランダムに動くヤツに戦略を検証させる
「いくつかある戦略のなかでどれがよいか?」を検証するやり方として、「大きな試行回数でランダムに戦略を選択する」という方法を見つけました。
これは、ほかでも使えそうです。

③:正規表現(reモジュール) re.matche
少し無理やり使いましたが、使い方の感覚がつかめました。
本来はもっと便利なはずですが、まだまだ使いこなせていませんね。
さらに、多様な表現があるので、今回はその氷山の一角しか使っていません。
また、どっかで使いたいですね。

④:確率操作 random.choises(選択肢, weights)
確率操作をする便利な方法を見出せました。これもどこかで使えそう。
使ってみて初めて分かるのが、choiceとchoicesの違いでした。
これは、実際にやってみないと分からなかったと思います。やっぱりアウトプットは重要ですね。

⑤:リストを文字列に変換する方法 ’’.join([リスト])
完全な副産物でしたが、面白いテクニックをしれました。
これも使いどころありそう。

3.プログラミングの学習について

プログラミングの学習って結局なんでしょうか?
ここでは、好き放題にプログラミングをかいていますが、その間に新しいコードを書き写して勉強しています。

ここで大事なのは、「書き方をミスしないこと」ではなくて「何が起きているかを理解すること」だと感じます。
さらにもう1つ、「何を使えば何ができるか?をたくさん知っておくこと」も重要だと思います。

これからもどんどん新たなテクニックを使っていきたいですね。

3.その他

プログラミングとは関係ないですが、このブログのコードの表示をかえました。
(この話はどっかでまとめようかな・・)

では、次のおもちゃ作りで!!!

PyQさんで勉強中!一緒にやろうぜ

コメント

タイトルとURLをコピーしました