答えは約 0.000127 (1/7900)
になったけど合ってるかな?
fact = lambda n: n and n * fact(n - 1) or 1
combi = lambda n,m: fact(n) / fact(m) / fact(n-m)
a = combi(13,13) * pow(6,13) + \
combi(13,11) * pow(6,11) * combi( 2, 1) + \
combi(13, 9) * pow(6, 9) * combi( 4, 2) + \
combi(13, 7) * pow(6, 7) * combi( 6, 3) + \
combi(13, 5) * pow(6, 5) * combi( 8, 4) + \
combi(13, 3) * pow(6, 3) * combi(10, 5) + \
combi(13, 1) * pow(6, 1) * combi(12, 6)
b = combi(53,26)
print float(a) / float(b)
2 件のコメント:
とりあえず同じ結果(0.000126571923042735)にたどり着いたので、記念に。
def fact(x)
a = 1; (1..x).each {|i| a *= i}; return a
end
def combi(n, m)
return fact(n) / (fact(m) * fact(n-m))
end
a = 0
(0..13).each { |n4|
(0..13).each { |n2|
(0..13).each { |n0|
if n4+n2+n0 == 13 && 4*n4+2*n2 == 26
a += combi(13,n4)*combi(13-n4,n2)*combi(13-n4-n2,n0)*(combi(4,2)**n2)
end
}
}
}
b = combi(53,26)
puts a/b.to_f
doimoiさんと結果が一緒ならきっと合ってますね
Rubyistですか私はデフォルト言語を未だに定めきれてません
コメントを投稿