Etablir toutes les combinaisons possibles du Lotto
KBNchapal
Messages postés4Date d'inscriptionmardi 23 décembre 2008StatutMembreDernière intervention 3 février 2009
-
2 févr. 2009 à 19:11
Mikaels35
Messages postés146Date d'inscriptiondimanche 23 janvier 2005StatutMembreDernière intervention17 novembre 2009
-
3 févr. 2009 à 19:51
Bonjour,
Je souhaiterais créer un programme sous VBA qui m'écrive dans une page excel toutes les combinaisons possibles du lotto(ancien lotto). C'est a dire toutes les combinaisons de 6 chiffres avec 49 chiffres possibles.
Ce genre de programme a surement déjà été réalisé mais après quelque recherche, j'ai seulement trouvé des sujets qui abordaient la meme question que moi mais qui n'obtenaient que des réponses approximatives et ne trouvaient jamais de réelle solution.
Pour aller plus loin, si je cherche à mettre en place ce genre de procédé c'est parce que je travaille actuellement sur la réalisation d'un jeu de poker texas holdem sous visual basic. Je bloque sur la façon de déterminer les jeux gagnants(le sujet a déjà été abordé ds plusieurs forums mais aucune réponse n'a été apportée) alors si certaines personnes ont déjà réalisé un jeu de poker, je serais tres interessé pour le tester.
Actuellement je réalise mon projet sous Visual Basic car c est le domaine que je maitrise relativement correctement mais je suis entrain d'apprendre le C/C++ et j'envisage le flash.
Le but de mon projet est de réaliser en quelque sorte une IA de joueur de poker, ce qui permettrait à mes amis de se confronter à mes robots et également de faire confronter différents robots les uns contre les autres de manière a tester différentes stratégies de jeu.
J'espere que ce sujet interressera certains et je remercie d'avance les personnes qui prendront le temps de m'apporter leur aide.
Mikaels35
Messages postés146Date d'inscriptiondimanche 23 janvier 2005StatutMembreDernière intervention17 novembre 20092 2 févr. 2009 à 20:22
Casy ce que tu donnes est le nombre d'arrangements c'est à dire les combinaisons dans l'ordre, en fait il n'y que 13 983 816 (6! fois moins) combinaisons de 6 nombres parmi 49, ce qui est quand même plus facile à loger dans une page Excel !
KBNchapal
Messages postés4Date d'inscriptionmardi 23 décembre 2008StatutMembreDernière intervention 3 février 2009 3 févr. 2009 à 00:35
En effet on écrit loto et non pas "lotto"!
Voilà l'exemple même de ce que j'ai pu trouver lors de mes recherches sur le sujet, on nous apprend que l'eau ça mouille et le feu ça brûle...
Bref toutes les remarques sont bonnes a prendre mais j'espère tout de même que certaines seront pertinantes et utiles...
Je voudrais savoir si certains connaissent un code qui permet d'établir la liste de ses 13 983 816 combinaisons?
Mikaels35
Messages postés146Date d'inscriptiondimanche 23 janvier 2005StatutMembreDernière intervention17 novembre 20092 3 févr. 2009 à 13:16
Tout est dans le code en C++
Déclarer 6 variables i,j,k,m,n,p en Integer et une constante = 49
Ouvrir un fichier
Faire 6 boucles imbriquées For Next
En VB6: les for(i=1;i<=nb_boules-5;i++) deviennent
For i = 1 To nb_boules - 5
For j =---
*
*
*
For p=---
écrire les valeurs de i,j,k,m,n,p dans le fichier, séparées par des virgules (ou autre chose)
Next p
*
*
*
Next j
Next i
Fermer le fichier !
Suivant que tu travailles en VB6 ou VB-Net la syntaxe sera être différente !
Ton fichier comprendra tout de même plus de 13 millions de lignes pour une taille de plus de 200Mo
Tu pourra théoriquement mettre les résultats dans une feuille Excel car 256x65536 = 16 777 216 cases
@+
Vous n’avez pas trouvé la réponse que vous recherchez ?
KBNchapal
Messages postés4Date d'inscriptionmardi 23 décembre 2008StatutMembreDernière intervention 3 février 2009 3 févr. 2009 à 17:28
Exacte ça marche très bien. Voici le code en VB6 pour ceux que ça intérrèssent :
For a = 1 To NbBoules - 5
For b = a + 1 To NbBoules - 4
For c = 1 To NbBoules - 3
For d = 1 To NbBoules - 2
For e = 1 To NbBoules - 1
For f = 1 To NbBoules
ActiveCell.Value = a & (";") & b & (";") & c & (";") & d & (";") & e & (";") & f
z = z + 1
If z < 65530 Then
ActiveCell.Offset(1, 0).Select
Else
ActiveCell.Offset(-65530, 1).Select
z = 1
End If
Next
Next
Next
Next
Next
Next
Ce problème est donc résolu mais ça ne résoud pas mon problème initiale qui était de créer un jeu de poker et donc être capable de déterminer quel est la main gagnante entre 2 joueurs. Sachant que si on établit un classement de ttes les mains possibles et que l'on regardait où se trouve la main de chaque joueur ds ce classement ça prendrait beaucoup trop de temps car au texas holdem on joue ac 7 cartes sur 52 donc un nombre combinaison supérieure à celui du loto...
Je vais donc tester un autre solution. Si certains ont des idées où on déjà travaillé sur le sujet, je suis preneur.
Mikaels35
Messages postés146Date d'inscriptiondimanche 23 janvier 2005StatutMembreDernière intervention17 novembre 20092 3 févr. 2009 à 19:51
Attention tu mets
For c= 1... il faut mettre For c= b+1.. et de même pour les variables suivantes, sinon tu obtiens des combinaisons comportant plusieurs fois le même nombres !