IT박스

파이썬에 수학 nCr 함수가 있습니까?

itboxs 2020. 6. 15. 21:59
반응형

파이썬에 수학 nCr 함수가 있습니까? [복제]


가능한 중복 :
통계 : 파이썬
계산 조합 및 순열의 조합을 효율적
으로 파이썬에서 오일러 문제를 프로젝트하십시오 (문제 53)

파이썬의 수학 라이브러리에 내장 된 것이 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

반복을 원하십니까? itertools.combinations . 일반적인 사용법 :

>>> import itertools
>>> itertools.combinations('abcd',2)
<itertools.combinations object at 0x01348F30>
>>> list(itertools.combinations('abcd',2))
[('a', 'b'), ('a', 'c'), ('a', 'd'), ('b', 'c'), ('b', 'd'), ('c', 'd')]
>>> [''.join(x) for x in itertools.combinations('abcd',2)]
['ab', 'ac', 'ad', 'bc', 'bd', 'cd']

수식을 계산해야하는 경우 math.factorial을 사용 하십시오 .

import math

def nCr(n,r):
    f = math.factorial
    return f(n) / f(r) / f(n-r)

if __name__ == '__main__':
    print nCr(4,2)

Python 3에서는 오버플 ///를 피하기 위해 정수 나누기를 대신 사용하십시오 .

return f(n) // f(r) // f(n-r)

산출

6

참고 URL : https://stackoverflow.com/questions/4941753/is-there-a-math-ncr-function-in-python

반응형