293 votes

Est-il un math rcn fonction en python?

Doublons Possibles:
Statistiques: combinaisons en Python
le comptage des combinaisons et permutations efficacement
Projet euler problème en python (problème 53)

Je suis à la recherche pour voir si elle est construite avec la bibliothèque de mathématiques en python est la rcn (n Choisir r) fonction:

enter image description here

Je comprends que cela peut être programmé, mais j'ai pensé que je voudrais vérifier pour voir si il est déjà construit avant je ne.

361voto

dheerosaur Points 4143

Le programme suivant calcule nCr de manière efficace (par rapport au calcul de factorielles, etc.)

import operator as op
def ncr(n, r):
    r = min(r, n-r)
    if r == 0: return 1
    numer = reduce(op.mul, xrange(n, n-r, -1))
    denom = reduce(op.mul, xrange(1, r+1))
    return numer//denom

236voto

Mark Tolonen Points 32702

Voulez-vous itération? itertools.les combinaisons. Utilisation courante:

>>> 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']

Si vous avez besoin de calculer la formule, l'utilisation des mathématiques.factorielle:

import math

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

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

Sortie

6

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X