ツクールでできる!?プログラミング教育のお話

12.本当に不平等だ、確率ってヤツは
(「100分の1の確率で出る」と「100回やれば1回出る」は違うというお話)
「確率」という言葉は聞いたことくらいはあると思います。今回はその「確率」のお話を
くじ引きで、そしてそのくじ引きを簡単に作れるプログラムを通して見ていきましょう。
まず、くじ引きには大きく2タイプあります。下がその違いになります。
 
割と、世の中でやる事の多いくじ引きはAタイプが多いと思います。賞品も用意しやすいですからね。
でもプログラム、コンピューターゲームの世界ではBタイプのくじ引きが多いような気がします。
よくある「運が良ければいいキャラがもらえる」といういわゆる「ガチャ」もこのBタイプのケースが多いです。
Bタイプのくじ引きは見ての通り、どの順番の人が引いても全く同じ確率、つまり同じクジを引いているので
命令を組むことがとても簡単なんです。

上の画像をクリックすることでゲームへ飛びます。
今回の説明部分は2ページめくった『12.思ったより当たる?当たらない?宝くじ体験』です。
前回、絶対に当たらないクジを作っていた男性ですが、今度はちゃんと当たりが出ます。
ただし100個のクジの中に当たりは1つだけ。当たる確率は100分の1です。
ここで注意が必要なのは、このクジは上の例で言うと「Bタイプ」にあたるということ。
100分の1で当たるクジだからといって、100回やれば必ず当たる訳ではありません。

今回のクジの命令部分です。最初の乱数の部分は「1〜100のどれかになるよ」という意味です。
そして最初の「条件分岐」(緑色の部分です)は、もし最初の乱数が1だったら大当たり、そうでないなら
次の条件分岐(オレンジ色の部分です)に進むよ、という命令になります。このように条件分岐は重ねて使えます。
オレンジ色の部分は「30より小さかったら中当たり、そうでなければハズレ」という命令です。
命令はルールとして上から順番に読んでいくのでこの場合「1だったら」と「30より小さい」を同時に達成する場合は
「1だったら」が優先されます。これで「1だったら大当たり、2〜30だったら中当たり、31〜100ならハズレ」
というクジの完成です。そして乱数は特に特別な命令を入れない限りはBタイプのくじ引きと同じ仕組みです。
つまり1つ前の数字は戻してやり直すので、同じ数字が2度続けて出ることもあります。
あとは一番最後に前回のようにクジを引いた回数分だけ変数を足していき、決められた数だけ引いたら次の命令へ
飛ぶようにすればよく言われる「10連ガチャ」「100連ガチャ」の完成です。
このようにプログラムを利用することで、自分でお手軽にガチャを作ることができるのです。

実際、試してみてどうだったでしょうか。よく当たると思った人、かなり当たらないと思った人、様々だと思います。
その「様々」が確率というもののある意味での面白さであり、不平等さでもあるのです。
100分の1の確率で当たるなら、100回やれば1回は当たりそうな気がしますが、実際に100回やって1回以上当たるのは
3人に2人くらい。3人に1人は100回やっても1回も大当たりが出ないようになっています。
実際このプログラムの「100回引く」を何回もやると、案外大当たりが0回の時が多いのが分かると思います。
具体的にどのくらい…というのはちゃんと計算すると複雑になるのでここでは細かくは説明しませんが
例を1つ。この確率で10回までで大当たりを引ければ気分いいと思います。でもそれに近い確率で
「200回引いても1回も当たらない」人がいる計算になります。「1回当たるのに200回かかった」ではなく
「1回も当たっていない」ことがポイント。そうです「当たっていない」んです。
今回のプログラムはいくらやってもタダなので問題ありませんが、これが1回100円だったら…。
10回と200回は1000円と2万円の差。1ヶ月のおこづかいと、お年玉レベルの差があります。
さらに悲しい事に、大当たりが出たのは1ヶ月分のおこづかい側。お年玉の子はそれでもなお出ていない状態です。
さらにさらに悲しいのは、このBタイプのクジは「これまで引いた回数は全く関係ない」ところ。
このまま引き続けた場合、もう当たっている人に2度目の当たりが来て、0回の人はもう100回やってもハズレ…。
なんてことも普通に起きる。これが確率の恐ろしいところです。
同じクジを引いている以上、不公平ではありません。でも出た結果は不平等。これが「確率」です。

大人の人に読んでほしい、ちょっと小難しい真面目なお話
「ガチャ」の語源はおもちゃ屋でお金を入れて回すとカプセルに入ったオモチャが出てくる「ガチャガチャ」だと
言われています。個人的にはガチャガチャはケースに見えている現物が出てきて、やればやるほど中の数が減るので
上で言うAタイプのくじ引きで、今の「ガチャ」とは異質なものだと思っているのですが…。

話を戻して…。確率を本格的に学習するのは中学生からだと聞きました。このタイミングは少し遅いと思っています。
(「場合の数」という確率の基礎になるものに関しては小学校でも学習するらしいですが)
前回・今回と、乱数を使ったサイコロやくじ引きを扱いましたが、プログラムを使えばこれも簡単に作れます。
そういう意味でも、プログラミング教育と確率は非常に相性がいいと思っています。
子どもは小さい頃から「当たる確率2分の1…」のように、無意識のうちに確率の世界に触れています。まして
「ガチャ」というこれだけ確率に支配されたものが身近になった以上、確率に関してのある程度の知識は
必要になってくるのではないかと思うのです。熱くなってガチャにつぎ込む子どもが増えないかは心配です。
そのために今回のプログラムを活かしていただけたら嬉しいです。もっと大人数、例えば1クラス単位でやれば
1発で出た子がいたり400回やっても出なかったり(←両者の確率は実は「400回やっても出ない」確率の方が高いです)、
盛り上がると思います。これももし1回300円のガチャでやろうものなら、300円で出た子と、12万円かけても出なかった子…。
阿鼻叫喚必至です。こういう確率の恐ろしさを知って、心にとめておいてほしいなと思うのです。

「本当に不平等だ、確率ってヤツは」


もどります
inserted by FC2 system