「確率」という言葉は聞いたことくらいはあると思います。今回はその「確率」のお話を
くじ引きで、そしてそのくじ引きを簡単に作れるプログラムを通して見ていきましょう。
まず、くじ引きには大きく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回やってもハズレ…。
なんてことも普通に起きる。これが確率の恐ろしいところです。
同じクジを引いている以上、不公平ではありません。でも出た結果は不平等。これが「確率」です。
|