組み合わせの計算 (combination)(Python)

$$ {}_n C_r = \frac{n!} {(n-r)! r!}$$

この計算をプログラミングに置き換えたい時に、一瞬めんどくさい!(´>ω<`)って思うことだろう。しかし前回作ったfactorial関数 (階乗の計算) を利用すると、あっさりと計算できる。単なる割り算、掛け算の計算に置き換えられるからだ。

nの階乗の計算 (factorial) | python - アナログデジタル浮遊録

ビックリマークの階乗を全てfactorialに置き換えれば良いだけ。 例えば、 n = 5 、 r = 3 の場合を考えてみよう。

n = 5
r = 3

result = factorial(n) / (factorial(n - r) * factorial(r))

print(result)

計算結果は10.0となるはずだ。

手動で計算してみたところ計算間違いはなさそうなので、これを元にcombinationファンクションを定義しておこう。

def combination(n, r):
    return factorial(n) / (factorial(n - r) * factorial(r))