from visual import *
from visual.factorial import *
factorial(N) = N!
combin(a,b) = a!/(b!*(a-b)!)
Remarque: Pour éviter de confondre avec le module nommé "factorial"
et la fonction appelée "factorial", importez le module factorial
après avoir importé le module visual module lui-même.
Une utilisation courante de ces fonctions est le calcul du nombre
de façons d'arranger un groupe d'objets. Par exemple, s'il y a 5 boules numérotées dans un sac,
il y a factorial(5) =
5! = 5*4*3*2*1 = 120 façons de les sortir séquentiellement du sac (5
possibilités pour la première boule, 4 pour la suivante et ainsi de suite).
Si par contre les 5 boules ne sont pas numérotées, mais 2 sont vertes et 3 rouges,
de 120 façons de choisir les boules, on passe à
2! façons indicernables d'arranger les boules vertes et 3! façons d'arranger
les boules rouges, ainsi le nombre d'arrangements différents de boules est égal à combin(5,2)
= 5!/(3!*2!) = 10.
Logiquement, la fonction combin (combinaison) est simplement une combinaison de fonctions factorial (factorielles).
Cependant, la simplification dans le numérateur et le dénominateur rend possible d'évaluer la fonction combin pour
des valeurs avec lesquelles on obtiendrait un dépassement de capacité pour la fonction factorial à cause de la taille limitée des nombres flottants.
Par exemple, combin(5,2) = 5!/(3!*2!)
= (5*4)/2 = 10, et nous n'avons pas à calculer 5! du tout.