秋学期の専門演習は、各自の研究発表と並行して、ベストセラー「統計学が最強の学問である」を読んでみることにした。最初の節に「あみだくじの必勝法」が出てくる。
著者の言う必勝法とは、【両端のくじをひく】。
ただし、以下のようにちょっとずるい?「仕込み」が必要。
- 私を含む参加者4名の倍の数である8本の縦線を引き
- 私が残りの参加者に見えないよう4番目の縦棒の下に星印をつけ
- 残り3人の友人には私に見えないように4本ずつ、あみだの横棒を引いてもらう
以下はこの本には書かれていないが、簡単なシミュレーションで確認できること。
筆者の「必勝法」で勝つためには、上のうち、2の仕込みがもっとも重要である。4番目の縦線の下に星印がついているなら、4番目のくじがあたる確率がもっとも高くなる(あたる確率は、星印がついた縦線を中心に正規分布に近い分布となる、つまり端の縦線に星印がついていれば筆者の方法では「必敗」)。さらに、3の仕込みもわりと重要で、たとえば他の参加者に8本ずつ横棒を引いてもらったりすると、どのくじを引いてもあたる確率はほぼ同じになってしまう(横棒の数が増えるにつれて分布の分散が大きくなり、一様分布のようになってしまう)。
晴れた空の土曜の朝に、カメラを持って出かけたい気持ちをギリギリ抑えて、あみだくじシミュレーション用の R プログラムを作成。これを月曜のゼミのネタにしてみようと思うんだけど・・・。
amidakuji <- function(ninzu=8,senbiki=2,goal=0) { # ninzu: あみだくじに参加する人数(=縦線の数) # senbiki: 横棒(横移動の線)を一人何本引けるか # goal: 終点のあたり番(0 ならランダムに決める) sen = ninzu; dan = ninzu*2 x = matrix(0,nrow=dan,ncol=sen) # あみだくじの作成 k = 0; step = sen -1 while(k < ninzu*senbiki) { i = sample(dan,size=1) ; j = sample(step,size=1) if( x[i,j]==0 && x[i,j+1]==0 ) { x[i,j]=1; x[i,j+1]=-1; k = k+1 } } if(goal==0) goal=sample(sen,size=1) # 終点のあたり番(0ならランダムに) atari = goal # あたりくじを終点から逆にたどっていく for( i in dan:1) atari = atari + x[i,atari] return(atari) }