新幹線の中でロディア6枚を費やして計算するうちに気付いたんだけど、正解のパターンは順列×ダブり分なんすよ。ダブり分はきれいなパターンがあって、こんな感じ。
# あれ? levelって引数はいらない気がしてきたぞ。
def double_ly(lower, upper, level, r=1) return r if level <= 0 (lower..upper).inject(0) do |sum, x| sum + double_ly(x, upper, level-1, x * r) end end
4種類で2つダブるときは、こうかな。
double_ly(1, 4, 2) * 4 * 3 * 2 * 1
起こりうるパターンは重複順列だから、それで割ると確率になります。
あとでまた清書しよう。