考えてみる.
サイコロを振る前に私が考えることと言えば
「4個サイコロを振って出目の2個の組み合わせ (和) で \(m\) が作れるか?」
ということである. すなわち、 すでに駒を置いた \(m\) のレーンがある場合には、 \(m\) を出しさえすればいいのである. そうすれば何度でもターンが続けられるので、それ以上の戦略は不要に思える.
4個のサイコロ中2個の和で \(m\) を作る確率を計算する.
# 出目のリスト dices から2つ選んで m を作れるか?
def make?(dices, m)
dices.combination(2).any? { |a, b| a + b == m }
end
# m-th lane
(2..12).each do |m|
count = 0
# 4個のサイコロの出目を全列挙
(1..6).to_a.repeated_permutation(4) do |a, b, c, d|
count += 1 if make?([a, b, c, d], m)
end
pr = count.to_f / 6 / 6 / 6 / 6
puts "#{sprintf("%2d", m)} => #{pr}"
end
2 => 0.13194444444444445
3 => 0.2330246913580247
4 => 0.35570987654320985
5 => 0.44753086419753085
6 => 0.5609567901234568
7 => 0.6435185185185185
8 => 0.5609567901234568
9 => 0.44753086419753085
10 => 0.35570987654320985
11 => 0.2330246913580247
12 => 0.13194444444444445
大凡予想通りである.
\(6,7,8\)-th の3つのレーンに駒を置いている場合にバーストする確率は、
0.06871499254944341
すなわち、93%くらいでセーフ.
\(m\)-th レーンを考える. 4つのサイコロを振って駒を進める 1 ステップ で \(m\)-th レーン上の駒を平均でどれだけ進められるだろうか? これを 速度 と呼ぶことにする. ただし初めにスタートに駒を置くという行為も1マス進めると見なして良いのはいいでしょう.
N.B. 先ほどの確率は4つの出目の内の2つの和で \(m\) を作れるか? しか考慮してないのでここでは使わない. 今は残り2つの和でも進めるところまで考慮する. すなわち、 \(m\) と \(m\) を作れるなら2マス進めることが出来るから.
速度を計算するプログラムは次の通り.
# 出目のリスト dices から2つ選んで n を作れるか?
def make?(dices, n)
dices.combination(2).any? { |a, b| a + b == n }
end
# m-th lane
(2..12).each do |m|
count = 0
# 4個のサイコロの出目を全列挙
(1..6).to_a.repeated_permutation(4) do |a, b, c, d|
sum = [a, b, c, d].inject :+
if make?([a, b, c, d], m)
if sum == m + m
count += 2
else
count +=1
end
end
end
average = count.to_f / 6 / 6 / 6 / 6
puts "speed(#{sprintf("%2d", m)}) = #{average}"
end
speed( 2) = 0.13271604938271606
speed( 3) = 0.2376543209876543
speed( 4) = 0.3703703703703704
speed( 5) = 0.4753086419753086
speed( 6) = 0.6080246913580247
speed( 7) = 0.7129629629629629
speed( 8) = 0.6080246913580247
speed( 9) = 0.4753086419753086
speed(10) = 0.3703703703703704
speed(11) = 0.2376543209876543
speed(12) = 0.13271604938271606
速度と、レーンの長さが分かっているので、\(m\)-th レーンについて、平均で何ステップの試行がゴールに必要かが分かる.
steps( 2) = 22.604651162790695
steps( 3) = 21.03896103896104
steps( 4) = 18.9
steps( 5) = 18.935064935064936
steps( 6) = 18.091370558375633
steps( 7) = 18.233766233766236
steps( 8) = 18.091370558375633
steps( 9) = 18.935064935064936
steps(10) = 18.9
steps(11) = 21.03896103896104
steps(12) = 22.604651162790695