サイコロを二つ使ってすごろく(2)
前回解決しなかった問題の続き。
どうにも一般的に取り扱う方法が思いつかない。
主だったポイントは前回のコメントでだいたい言い尽くされてしまった感じなので、その部分の整理だけやっておこうと思う。
とりあえずスゴロクは次のように定義する。
- スタート地点を0コマ目、そこから順に1コマ目、2コマ目と数えることにする
- 1−6までが均一に出るサイコロを2つ振って出た数の合計、または同じサイコロを1つ振って出た数の2倍進むことができる。
- sコマ目にあるゴールに到達するまでにサイコロを振った回数が少ない方が勝ちとする。(先にゴールしたほうが勝ちにすると先攻が圧倒的に有利なので、同じターンでゴールインした場合は同着とする。)
- ゴールに着いた時点でまだ進めるコマ数が残っていても戻ることはしない。
この条件でsコマ目にあるゴールに先につけるのは、サイコロ2個の方だろうか。それともサイコロ1個を2倍の方だろうか。
まずサイコロをa回振ったときにbコマ目にピッタリ止まる確率P(a,b)は次のように表すことができる
P(a,b) = Σ[n=2-12] {P(a-1,b-n)*サイコロの目がnになる確率}
(a回目にbコマ目にいる条件は、a-1回目(つまり一回前)にb-nコマ目にいて、かつサイコロの目でnが出る確率である)
また、初期条件として
P(0,0) = 1 (サイコロを振る前にスタート地点にいる確率は1)
P(a,b) = 0 [a<0,bは任意] (スタート地点より前にいる確率は0)
またsコマ目にあるゴールにサイコロをa回振ったときにゴールイン出来る確立Ps(a)は
Ps(a) = Σ[n=2-12] {P(a-1,b-n)*サイコロの目がn以上になる確率}
(a回目にゴールインする条件は、a-1回目(つまり一回前)にゴールからnコマ目にいて、かつサイコロの目でn以上が出る確率である)
となる。
これで漸化式が立ったのであとはこれを解くといいのだが、どうにも代数的に解くのが無理だった。
なので、文明の利器たるPCを使って再帰呼び出しでプログラムしてしまうことにする。
計算によると、例えばゴールが8コマ目にある場合、各方式でのサイコロを振る回数とゴールインできる確率の関係は
サイコロ2個
1回でゴールイン=0.416666667 2回=0.55632716 3回=0.026856139 4回=0.000150034
サイコロ1個x2倍
1回でゴールイン=0.5 2回=0.416666667 3回=0.078703704 4回=0.00462963
となる。
ゴールインするまでに平均して振るサイコロの回数の期待値は例えばゴールが8コマ目にある場合では
サイコロ2個 = 1.61048954回
サイコロ1個x2倍 = 1.587962963
となる。
ただし、期待値がそのまま有利さに繋がるとは限らない。
そこで、上で求めた各サイコロを振る回数と確率を元にして、実際にどちらが勝つかを考える。
自分が勝つ確率Pwは、
Pw = Σ (自分がn回でゴールインできる確率 x 相手がn回以内にゴールイン出来ない確率)
なので、各々の勝率は(これも数値計算で)
ゴールまでのコマ数 1個の勝率 引き分け率 2個の勝率 1 0 1 0 2 0 1 0 3 0.162037037 0.814814815 0.023148148 4 0.152777778 0.777777778 0.069444444 5 0.282385974 0.606267147 0.111346879 6 0.248349623 0.565286351 0.186364026 7 0.325477867 0.461364582 0.213157551 8 0.254818264 0.442250689 0.302931047 9 0.297543076 0.434621091 0.267835833 10 0.235564752 0.437779536 0.326655712 11 0.287088834 0.470784448 0.242126718 12 0.237419476 0.465359609 0.297220914 : 20 0.335004858 0.369272343 0.295722799 21 0.29114578 0.360056818 0.348797402 : 50 0.393956496 0.242204844 0.363838661 51 0.36195859 0.239908715 0.398132694 : 1999 0.483087386 0.039472378 0.477440237 : 4999 0.489298563 0.024972453 0.485728984 :
となる。
前回のコメントでmenさんが指摘していたように、7コマまではサイコロ1個が有利で8コマ目で逆転、その後は交互に有利な方が入れ替わる。
また20コマ付近では偶数コマ数の場合に関しては数値計算上はほとんど差が無くなって収束していくが、奇数コマ数の場合はサイコロ2個振ったほうが有利な状態が続く。
また、奇数コマ数の時のサイコロ2個の有利さもだんだん減少していくのだが、こちらの収束は非常にゆっくりで5000コマ付近でもまだ収束する様子が無い。
素直な再帰で書いていたら20コマ付近で限界が来たのでだいぶん書き直したんだけど、それでも5000コマだと5分くらいかかるようになってきたんでこの辺で打ち切る。
どうやら勝率50%を越えることはなさそうな雰囲気だ。雰囲気だけ。だって自信ないしぃ
このようになる理由はやはりmenさんが指摘していたように、以下の理由によるものだと思われる。
- コマ数が奇数の場合、サイコロを1個だけ振って2倍にするやりかたでは「最低でも1コマ行き過ぎないと」ゴールできない。言い換えると1個x2倍の人は2個の人より1コマ多いスゴロクをやっているのと同じである
- コマ数が偶数の場合は1個x2倍の方が「ぴったりゴールできる」可能性が少しだけ高い
- これらの差はかなり決定的なもので、コマ数が非常に大きくなってもかなり影響が残る
ということで、少なくとも数値計算上は(元記事の方にはちょっと申し訳ない感じだが)「平均に早く近づいていく方が有利」という感じでは無いみたいだ。
もっとも「平均化が進んだ方が各コマにピッタリ止まれる確率は理論値に収束していくので、ゴールにピッタリ止まれる確率も上がって有利になる」という意味にもとれるな。
いずれにしてもサイコロ2個とサイコロ1個x2倍で差が出るという着眼点はとても新鮮だった。
また、50コマ程度の実用的なサイズのスゴロクでもこの二つの戦略の違いで一割ほども勝率に違いが出ることや、5000コマもあるスゴロクでも引き分けが2.5%もあることなんかもけっこう驚きの結果という気がする。
今回は力不足によって数値計算に逃げてしまったのがちょっと残念だったけど、それなりに楽しめた。
やっぱり直感的に「アレ?」と思うようなことが実際に起こっているのがわかると言うのは非常に面白い。