MATH_Combinaison    [Statistiques]

Par Marc Duc-Jacquet (Math4D v1)
Nouvelle recherche
Si (Faux)
   ` MATH_Combinaison [Marc Duc-Jacquet 06/10/2002]
   ` ---------------------------------------------
   ` Rappels mathématiques :
   ` C(n,p) = n!/p!(n-p)!
   ` n! = factorielle de n = 1 x 2 x 3 x ;;; x n
   ` Combinaisons sans répétitions de p objets pris dans un ensemble de n objets
   ` = Nombre de sous-ensembles différents de p objets d'un ensemble de n objets
   ` ---------------------------------------------
   ` MATH_Combinaison (Nombre1; Nombre2) -> Numérique
   ` Nombre1 (Numérique) Nombre d'objets
   ` Nombre2 (Numérique) Nombre d'objets inclus dans chaque combinaison
   ` Résultat (Numérique) Nombre de combinaisons
   ` ---------------------------------------------
   ` MATHERROR
   ` 0 -> Pas d'erreur
   ` -1 -> Un des paramètres au moins est hors définition 
   ` -2 -> 1er paramètre nul
   ` -3 -> 2ème paramètre p supérieur au 1er paramètre n
   ` -4 -> 2ème paramètre nul
   ` ---------------------------------------------
   ` EXEMPLES
   ` Combien de mains de 13 cartes peut-on avoir avec un jeu de 52 cartes 
   ` MATH_Combinaison (52;13) = 635013559600
   ` Tiercés possibles avec 10 chevaux au départ 
   ` MATH_Combinaison (10;3) = 120
   ` 
Fin de si 

C_ENTIER LONG(MATHERROR)
C_ENTIER LONG($1;$2)
C_REEL($0)
$0:=0

  ` Traitement des erreurs
Au cas ou 
 : (($1<0) | ($2<0))
 MATHERROR:=-1
 : ($1=0)
 MATHERROR:=-2
 : ($1<$2)
 MATHERROR:=-3
 : ($2=0)
 MATHERROR:=-4
Sinon 
 MATHERROR:=0
Fin de cas 

  ` Algorithme
Si (MATHERROR=0)
 C_ENTIER LONG($N;$P;$i;$j;$h)
 
 $N:=$1
 $P:=$2
 
 TABLEAU ENTIER LONG($Tab;$N+1;$P+1)
 
 Boucle ($i;1;$N+1)
  $Tab{$i}{1}:=1
 Fin de boucle 
 
 Boucle ($j;2;$P+1)
  $h:=$j
  Boucle ($i;$h;$N+1)
   $Tab{$i}{$j}:=$Tab{$i-1}{$j}+$Tab{$i-1}{$j-1}
  Fin de boucle 
 Fin de boucle 
 
 $0:=$Tab{$N+1}{$P+1}
 
Fin de si