疑似サイコロ作成の概要

ホームC#入門講座第2章:疑似サイコロ > 疑似サイコロ作成の概要

疑似サイコロ作成の概要

サイコロとは?

サイコロを定義するとすれば、このように定義できるでしょう。

「1から6までの整数がランダムに表れる物体」

もちろん、「向かい合う面の和は常に7」という条件も「立方体」という条件もありますが、ここではそれらの条件は排除してみます。要するに、1から6までの数字をランダムに出力できるプログラムを考案します。

疑似サイコロとは?

プログラムによってサイコロを再現する以上、完璧なサイコロは作れません。つまり、すべての数が完全に等しい確率で表れるサイコロをプログラム上で実現するのは非常に困難です。

ですから、できるだけ精度を高め、「十分サイコロとして使える」レベルのサイコロを作るのです。これを「疑似サイコロ」ということにしましょう。

疑似サイコロを作る際に必要とされるのは知識ではありません。論理的に考える力です。全く何もない状態から、1から6までの整数がほぼ平等に表れるようなプログラムを作るにはどうすればいいか、自分の頭で考えましょう。私はこの章を通じていくつかのサンプルを作ってみようと思いますが、それとは違うものを考案することも十分可能です。ぜひ挑戦してみてください。

確率を支配する神

疑似サイコロを作るということは、プログラムによって確率を支配するということです。私たちは自らつくり出すプログラムによって、自らつくり出すサイコロの目の確率を支配するのです。

現実世界では確率を支配することはできません。確率を支配するのは神のみに許された特権です。たとえば恋愛はその代表的な例です。「運命の人」という表現には、「私たちは神の導きによって出会ったのよ」という響きが込められています。これはある特定の宗教ではなく、「確率を支配する神」を意味しています。

この章でやるのは、そのような行為です。確率を支配するのです。だから、完璧な回答は私たちの手ではなく、神の手にのみ委ねられているのです。私たちがプログラムで疑似サイコロを作るというのは、「確率を支配する神」が確率を操作する瞬間をかいま見ることです。

プログラミングで「アルゴリズム」を学ぶとき、人は誰でも神に一歩近づきます。しかし、「完璧なサイコロ」を作れないという事実に突き当たって、「確率を支配すること」の難しさを知るのです。

みなさんはぜひ、自らの頭で疑似サイコロを作ってみてください。この章では、そのために必要な武器を伝授します。その武器とは、極めて強力な「条件分岐」と「繰り返し」です。