本記事ではPythonで組み合わせ・階乗を計算する方法を解説します。
Pythonで組み合わせ・階乗を計算するには、標準ライブラリ、SciPy、SymPyで可能です。
階乗・組み合わせとは
階乗の定義は下記のとおりです。
1からnまでの連続するn個の自然数の積をnの階乗という。
https://www.weblio.jp/content/%E9%9A%8E%E4%B9%97
n!と書き、例えば4!=1×2×3×4=24と表す。
組み合わせの定義は下記のとおりです。
n個の異なるものの中から、順序を考えないでr個のものを取り出して作った組
https://www.weblio.jp/content/%E7%B5%84%E3%81%BF%E5%90%88%E3%82%8F%E3%81%9B
その総数をnCrで表すと、nCr={n(n−1)(n−2)…(n−r+1)}/{r(r−1)(r−2)…・1}となる。
階乗・組み合わせの実装
標準ライブラリ
標準ライブラリで計算する場合は特にライブラリをインストールする必要はありません。
階乗は次の通りです。
# ①標準ライブラリをインポート
import math
# ②階乗を計算する
print(math.factorial(4))
組み合わせは次の通りです。
# ①標準ライブラリをインポート
import math
# ②組み合わせを計算する
print(math.comb(4, 2))
SciPy
SciPyで計算する場合は事前準備としてライブラリをインストールする必要があります。
pip install scipy
SciPyを利用した際の階乗の算出は次の通りです。
# ①SciPyライブラリをインポート
from scipy.special import perm
# ②階乗を計算する
print(perm(4, 4))
SciPyを利用した際の組み合わせの算出は次の通りです。
# ①SciPyライブラリをインポート
from scipy.special import comb
# ②組み合わせを計算する
print(comb(4, 2))
SymPy
SymPyで計算する場合は事前準備としてライブラリをインストールする必要があります。
pip install sympy
SymPyを利用した際の階乗の算出は次の通りです。
# ①SymPyライブラリをインポート
import sympy
# ②階乗を計算する
print(sympy.factorial(4))
SymPyを利用した際の組み合わせの算出は次の通りです。
# ①SymPyライブラリをインポート
import sympy
# ②階乗を計算する
print(sympy.functions.combinatorial.numbers.nC(4, 2))

どのライブラリで算出しても同じなので好きなのを選んでください。
個人的にはライブラリのインストールが不要な標準ライブラリをお勧めします。
