あみだくじ

秋学期の専門演習は、各自の研究発表と並行して、ベストセラー「統計学が最強の学問である」を読んでみることにした。最初の節に「あみだくじの必勝法」が出てくる。

著者の言う必勝法とは、【両端のくじをひく】。
ただし、以下のようにちょっとずるい?「仕込み」が必要。

  1. 私を含む参加者4名の倍の数である8本の縦線を引き
  2. 私が残りの参加者に見えないよう4番目の縦棒の下に星印をつけ
  3. 残り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) 
}

このブログ記事について

このページは、eiichiが2014年9月27日 22:11に書いたブログ記事です。

ひとつ前のブログ記事は「幻の反論文書」です。

次のブログ記事は「講座登録の怪」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

月別 アーカイブ

ウェブページ

Powered by Movable Type 5.13-ja