中学講座

【中学生講座】P①-1月「確率計算で分かるプログラミング(part2)〜確率をプログラムで検証〜 この回で学ぶプログラミング内容:数学の問題を解くことへのプログラムの応用方法」

[1]1月のテーマ

テーマ:確率計算で分かるプログラミング(part2)〜確率をプログラムで検証〜
今回のプログラミング講座は前回の知識を用いて、確率の有名問題をプログラムで検証することを行いました。今回取り上げた問題はモンティホール問題という条件付き確率の有名な問題です。モンティホール問題で行われる様々な操作(当たりを入れる、プレイヤーが扉を選ぶ、司会者が扉をオープンするなど)を乱数を使ってすべて実装する形をとりました。それを複数回繰り返すことで統計的な確率の考え方を用いて検証をしました。

[2] より深い理解のために

モンティホール問題の概要は、3つの扉がありそこにあたりが1つ入っています。プレイヤーは扉を初めに1つ選びますが、その後司会者がプレイヤーが選んだ以外の扉で外れの扉を1つオープンさせます。そしてここでプレイヤーは扉を変更することができます。変更した場合、当たる確率は1/3から2/3に上がりますが、今回はプログラミング講座ですので条件付き確率の式を使った数学的な議論ではなく実際にこのプログラムを組むことでその検証を行いました。数学による議論は数学講座で詳しくやるので、そちらをお楽しみにしていて下さい。

[3]実装の仕方はいくらでもある

前回確率を求める方法として、乱数を発生させて試行回数を多くすることで該当する事象がどれぐらい起きたかを基準にして確率を求める方法を考えてみました。この確率の求め方の根本原理は統計的な確率という分野に依存することです。今回はそれだけでなく、司会者が扉をオープンすることやプレイヤーが扉を変更するといった行為をどのように実現するかがプログラミングとして面白い部分でした。方法はハズレは0を入れて、当たりは1を入れて、オープンさせた扉にはー1を入れるという方法で実装してみましたが、当然これらは決まりきったものではないため、実装の仕方はいろいろあります。独自の表現ができるとプログラミングがより面白くなるでしょう。

関連記事

教育ブログランキング

にほんブログ村

PVアクセスランキング にほんブログ村