Outil pour générer les combinaisons. 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, dont le cardinal est le coefficient binomial.
Combinaisons de K parmi N - dCode
Catégorie(s) : Combinatoire
dCode est gratuit et ses outils sont une aide précieuse dans les jeux, les maths, les énigmes, les géocaches, et les problèmes à résoudre au quotidien !
Une suggestion ? un problème ? une idée ? Ecrire à dCode !
Pour obtenir une liste de combinaison avec un minimum de nombres garanti (aussi appelée réduction de tirage), dCode a un outil pour ça :
Pour tirer des nombres au hasard (Loto, Euromillions, Keno, etc.)
Outil pour générer les combinaisons. 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, dont le cardinal est le coefficient binomial.
Le générateur permet de choisir les valeurs de $ k $ et $ n $, et génère les listes de combinaisons posssibles correspondantes avec des chiffres ou des lettres (ou encore une liste personnalisée).
Exemple : 2 parmi 4 donne : (1,2),(1,3),(1,4),(2,3),(2,4),(3,4)
La génération est limitée à 2000 résultats. L'algèbre combinatoire pouvant introduire de très grands nombres, cette limite permet de ne pas surcharger le serveur.
Pour des générations de listes importantes, dCode propose des prestations de service sur devis.
Le calcul a effectuer utilise la loi binomiale et le coefficient binomial suivant : $$ C_n^k = \binom{n}{k} = \frac{n!}{k!(n-k)!} $$
Les combinaisons utilisent des calculs de factorielles (le point d'exclamation !).
2 parmi 3 = 3 combinaisons | (1,2)(1,3)(2,3) |
2 parmi 4 = 6 combinaisons | (1,2)(1,3)(1,4)(2,3)(2,4)(3,4) |
2 parmi 5 = 10 combinaisons | (1,2)(1,3)(1,4)(1,5)(2,3)(2,4)(2,5)(3,4)(3,5)(4,5) |
2 parmi 6 = 15 combinaisons | (1,2)(1,3)(1,4)(1,5)(1,6)(2,3)(2,4)(2,5)(2,6)(3,4)(3,5)(3,6)(4,5)(4,6)(5,6) |
2 parmi 7 = 21 combinaisons | (1,2)(1,3)(1,4)(1,5)(1,6)(1,7)(2,3)(2,4)(2,5)(2,6)(2,7)(3,4)(3,5)(3,6)(3,7)(4,5)(4,6)(4,7)(5,6)(5,7)(6,7) |
2 parmi 8 = 28 combinaisons | (1,2)(1,3)(1,4)(1,5)(1,6)(1,7)(1,8)(2,3)(2,4)(2,5)(2,6)(2,7)(2,8)(3,4)(3,5)(3,6)(3,7)(3,8)(4,5)(4,6)(4,7)(4,8)(5,6)(5,7)(5,8)(6,7)(6,8)(7,8) |
2 parmi 9 = 36 combinaisons | (1,2)(1,3)(1,4)(1,5)(1,6)(1,7)(1,8)(1,9)(2,3)(2,4)(2,5)(2,6)(2,7)(2,8)(2,9)(3,4)(3,5)(3,6)(3,7)(3,8)(3,9)(4,5)(4,6)(4,7)(4,8)(4,9)(5,6)(5,7)(5,8)(5,9)(6,7)(6,8)(6,9)(7,8)(7,9)(8,9) |
3 parmi 4 = 4 combinaisons | (1,2,3)(1,2,4)(1,3,4)(2,3,4) |
3 parmi 5 = 10 combinaisons | (1,2,3)(1,2,4)(1,2,5)(1,3,4)(1,3,5)(1,4,5)(2,3,4)(2,3,5)(2,4,5)(3,4,5) |
3 parmi 6 = 20 combinaisons | (1,2,3)(1,2,4)(1,2,5)(1,2,6)(1,3,4)(1,3,5)(1,3,6)(1,4,5)(1,4,6)(1,5,6)(2,3,4)(2,3,5)(2,3,6)(2,4,5)(2,4,6)(2,5,6)(3,4,5)(3,4,6)(3,5,6)(4,5,6) |
3 parmi 7 = 35 combinaisons | (1,2,3)(1,2,4)(1,2,5)(1,2,6)(1,2,7)(1,3,4)(1,3,5)(1,3,6)(1,3,7)(1,4,5)(1,4,6)(1,4,7)(1,5,6)(1,5,7)(1,6,7)(2,3,4)(2,3,5)(2,3,6)(2,3,7)(2,4,5)(2,4,6)(2,4,7)(2,5,6)(2,5,7)(2,6,7)(3,4,5)(3,4,6)(3,4,7)(3,5,6)(3,5,7)(3,6,7)(4,5,6)(4,5,7)(4,6,7)(5,6,7) |
4 parmi 5 = 5 combinaisons | (1,2,3,4)(1,2,3,5)(1,2,4,5)(1,3,4,5)(2,3,4,5) |
4 parmi 6 = 15 combinaisons | (1,2,3,4)(1,2,3,5)(1,2,3,6)(1,2,4,5)(1,2,4,6)(1,2,5,6)(1,3,4,5)(1,3,4,6)(1,3,5,6)(1,4,5,6)(2,3,4,5)(2,3,4,6)(2,3,5,6)(2,4,5,6)(3,4,5,6) |
4 parmi 7 = 35 combinaisons | (1,2,3,4)(1,2,3,5)(1,2,3,6)(1,2,3,7)(1,2,4,5)(1,2,4,6)(1,2,4,7)(1,2,5,6)(1,2,5,7)(1,2,6,7)(1,3,4,5)(1,3,4,6)(1,3,4,7)(1,3,5,6)(1,3,5,7)(1,3,6,7)(1,4,5,6)(1,4,5,7)(1,4,6,7)(1,5,6,7)(2,3,4,5)(2,3,4,6)(2,3,4,7)(2,3,5,6)(2,3,5,7)(2,3,6,7)(2,4,5,6)(2,4,5,7)(2,4,6,7)(2,5,6,7)(3,4,5,6)(3,4,5,7)(3,4,6,7)(3,5,6,7)(4,5,6,7) |
5 parmi 6 = 6 combinaisons | (1,2,3,4,5)(1,2,3,4,6)(1,2,3,5,6)(1,2,4,5,6)(1,3,4,5,6)(2,3,4,5,6) |
5 parmi 7 = 21 combinaisons | (1,2,3,4,5)(1,2,3,4,6)(1,2,3,4,7)(1,2,3,5,6)(1,2,3,5,7)(1,2,3,6,7)(1,2,4,5,6)(1,2,4,5,7)(1,2,4,6,7)(1,2,5,6,7)(1,3,4,5,6)(1,3,4,5,7)(1,3,4,6,7)(1,3,5,6,7)(1,4,5,6,7)(2,3,4,5,6)(2,3,4,5,7)(2,3,4,6,7)(2,3,5,6,7)(2,4,5,6,7)(3,4,5,6,7) |
Le principe des combinaisons est de ne pas tenir compte de la notion d'ordre (1,2) = (2,1). Utiliser les permutations pour obtenir des combinaisons ordonnées possibles.
dCode propose un outil dédié pour les combinaisons avec répétitions.
Pour gagner au loto français, avant 2008, consistait en un tirage de 6 boules parmi 49.
Exemple : Calculer le nombre de combinaisons de 6 parmi 49 = 13 983 816 combinaisons. La probabilité de gagner est donc 1 chance sur 14 millions.
Pour gagner au loto français, après 2008, le tirage est de 5 boules parmi 49, puis 1 boule parmi 10.
Exemple : Calculer le nombre de combinaisons de 5 parmi 49 = 1 906 884, et de multiplier par (1 parmi 10) = 10 soit un total de 19 068 840 combinaisons. La probabilité de gagner est donc 1 chance sur 19 millions.
Pour gagner à l'EuroMillions, le tirage est de 5 boules parmi 50, puis 2 étoiles parmi 12.
Exemple : Calculer le nombre de combinaisons de 5 parmi 50 = 2 118 760, et de multiplier par (2 parmi 12) = 66 soit un total de 139 838 160 combinaisons. La probabilité de gagner est donc 1 chance sur 140 millions.
De nombreux livres décrivent des stratégies pour les tirages au sort comme ici (lien) Une des stratégies est de jouer des systèmes réducteurs.
Si $ k = 0 $ alors 0 élément sont demandés, il n'y a un unique résultat vide. Ainsi $$ \binom{n}{0} = 1 $$
Si $ n = 0 $ alors il n'y a 0 élément, impossible d'en prendre $ k $, donc il n'y a pas de résultats. Donc $$ \binom{0}{k} = 0 $$
Par convention $$ \binom{0}{0} = 1 $$
// pseudo code
debut 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// langage C
double factorielle(double x) {
double i;
double result=1;
if (x >= 0) {
for(i=x;i>1;i--) {
result = result*i;
}
return result;
}
return 0; // erreur
}
double compter_combinaisons(double x,double y) {
double z = x-y;
return factorielle(x)/(factorielle(y)*factorielle(z));
}<code><br>// Langage VBA<br>Function Factorielle(n As Integer) As Double<br> Factorielle = 1<br> For i = 1 To n<br> Factorielle = Factorielle * i<br> Next<br>End Function<br>Function NbCombinaisons (k As Integer, n As Integer) As Double<br> Dim z As Integer<br> z = n - k<br> NbCombinaisons = Factorielle(n) / (Factorielle(k) * Factorielle(z))<br>End Function<br></code>
// javascript
function combinaisons(a) { // a = new Array(1,2)
var fn = function(n, source, en_cours, tout) {
if (n == 0) {
if (en_cours.length > 0) {
tout[tout.length] = en_cours;
}
return;
}
for (var j = 0; j < source.length; j++) {
fn(n - 1, source.slice(j + 1), en_cours.concat([source[j]]), tout);
}
return;
}
var tout = [];
for (var i=0; i < a.length; i++) {
fn(i, a, [], tout);
}
tout.push(a);
return tout;
}
dCode se réserve la propriété du code source de l'outil 'Combinaisons de K parmi N' en ligne. Sauf code licence open source explicite (indiqué CC / Creative Commons / gratuit), tout algorithme, applet ou snippet (convertisseur, solveur, chiffrement / déchiffrement, encodage / décodage, encryptage / décryptage, traducteur) ou toute fonction (convertir, résoudre, décrypter / encrypter, déchiffrer / chiffrer, décoder / encoder, traduire) codé en langage informatique (PHP, Java, C#, Python, Javascript, Matlab, etc.) aucune donnée, script, copier-coller, ou accès API ne sera cédé gratuitement, idem pour télécharger Combinaisons de K parmi N pour un usage hors ligne, PC, tablette, appli iPhone ou Android !
Rendez-vous sur notre communauté Discord pour participer au forum d'entraide !