En mathématiques, un choix de k objets parmi n objets discernables, ou l'ordre n'intervient pas, se représente par ensemble d'éléments. Le calcul se fait de la manière suivante :

La génération ne renverra pas de résultat si le dénombrement des combinaisons est largement supérieur à 2000 afin de ne pas surcharger le serveur.
Les lettres doivent être distinctes pour obtenir un résultat unique.
Le programme accepte les très grands nombres (précision arbitraire).
Le principe des combinaisons est de ne pas tenir compte de la notion d'ordre. Utiliser les permutations pour celà.
Au loto français, avant 2008, on tire 6 boules parmi 49, il suffit de calculer le nombre de combinaisons de 6 parmi 49 = 13 983 816.
Au loto français, après 2008, on tire 5 boules parmi 49, et 1 parmi 10, il suffit de calculer le nombre de combinaisons de 5 parmi 49 = 1 906 884, à multiplier par 1 parmi 10 = 10 soit un total de 19 068 840.
// pseudo code
début denombrement_combinaisons( k , n ) {
si (k = n) retourner 1;
si (k > n/2) k = n-k;
res = n-k+1;
pour i = 2 par 1 tant que i < = k
res = res * (n-k+i)/i;
fin pour
retourner res;
fin
// javascript
function combinaisons(a) { // a = new Array(1,2)
var fn = function(n, src, got, all) {
if (n == 0) {
if (got.length > 0) {
all[all.length] = got;
}
return;
}
for (var j = 0; j < src.length; j++) {
fn(n - 1, src.slice(j + 1), got.concat([src[j]]), all);
}
return;
}
var all = [];
for (var i=0; i < a.length; i++) {
fn(i, a, [], all);
}
all.push(a);
return all;
}
// C
double factorielle(double *x) {
double i;
double result=1;
if(*x >= 1) {
for(i=*x;i>1;i--) {
result = result*i;
}
return result;
}
else if(*x == 0) return 1;
return 0;
}
double compter_combinaisons(double x,double y) {
double z = x-y;
return factorielle(&x)/(factorielle(&y)*factorielle(&z));
}
© 2012 dcode.fr — Le site indispensable pour résoudre les énigmes, les jeux et les chasses au trésor. dCode