出目の確率が公平でないかもしれない6面体サイコロが与えられたときに、公平なサイコロを振ったときのように等確率で1から6までの整数を出す乱数を生成する方法があります。
ただし、与えられたサイコロを何度振ってもよく、毎回出る目の確率は変わらないものとします。
ここで紹介する方法は、John von Neumannが[1]で紹介している「表裏が不公平に出るコインを投げることで公平なコイン投げと同等のことができる」という方法の応用です。
ただこの方法だと、出にくい目のために何度も繰り返しサイコロを振る羽目になるという欠点があります。それどころか、与えられたサイコロで実は特定の目が出ないという場合にはうまくいきません。
そこで、次のような改良した方法も考えられます。こちらなら、出ない目が3つまであっても問題ないだけでなく、むしろ出ない目がちょうど3つあるときは乱数生成に必要となるサイコロを振る回数の期待値が減ります。
まず与えられたサイコロを試しに何度か振り、比較的出やすそうな出目を3つ事前に選んでおく(以下では、選んだ3つの出目をそれぞれ\(n_1\)、\(n_2\)、\(n_3\)とよぶ)。
[1] John von Neumann, "Various techniques used in connection with random digits," in A.S. Householder, G.E. Forsythe, and H.H. Germond, eds., Monte Carlo Method, National Bureau of Standards Applied Mathematics Series, 12 (Washington, D.C.: U.S. Government Printing Office, 1951): 36-38.