1. ホーム
  2. パイソン

[解決済み】pythonで数学のnCr関数はありますか?[重複しています]。

2022-04-03 12:10:04

質問

<ブロッククオート

重複の可能性があります。

統計:Pythonの組み合わせ

組み合わせと並べ換えを効率的に数える

Pythonでプロジェクト・オイラー問題(問題53)

Pythonの数学ライブラリにnCr (n Choose r)関数が組み込まれているかどうか調べています。

これはプログラムできることは理解していますが、その前にすでに組み込まれているかどうかを確認しようと思いました。

どのように解決するのですか?

次のプログラムは nCr を(階乗などの計算と比較して)効率的に計算することができます。

import operator as op
from functools import reduce

def ncr(n, r):
    r = min(r, n-r)
    numer = reduce(op.mul, range(n, n-r, -1), 1)
    denom = reduce(op.mul, range(1, r+1), 1)
    return numer // denom  # or / in Python 2


Python 3.8では、二項係数は標準ライブラリで次のように利用できます。 math.comb :

>>> from math import comb
>>> comb(10,3)
120