Etablir toutes les combinaisons possibles du Lotto

Signaler
Messages postés
4
Date d'inscription
mardi 23 décembre 2008
Statut
Membre
Dernière intervention
3 février 2009
-
Messages postés
146
Date d'inscription
dimanche 23 janvier 2005
Statut
Membre
Dernière intervention
17 novembre 2009
-
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.

KBNchapal.
A voir également:

6 réponses

Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
36
Pour le poker, je ne connais pas, mais pour le loto (il n'y a qu'un seul T), bon courage.

Il n'y a pas beaucoup de combinaisons, juste 10 068 347 520 de combinaisons (10 milliards) pour l'ancien loto (6 n° parmis 49)

---- Sevyc64  (alias Casy) ---- # LE PARTAGE EST NOTRE FORCE #   
Messages postés
146
Date d'inscription
dimanche 23 janvier 2005
Statut
Membre
Dernière intervention
17 novembre 2009
1
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 !

@+
Messages postés
4
Date d'inscription
mardi 23 décembre 2008
Statut
Membre
Dernière intervention
3 février 2009

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?

J'ai tourvé la réponse en C++ mais moi je souhaiterais le code pour Visual Basic. :)
(http://www.cppfrance.com/code.aspx?id=23260)
Messages postés
146
Date d'inscription
dimanche 23 janvier 2005
Statut
Membre
Dernière intervention
17 novembre 2009
1
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

@+
Messages postés
4
Date d'inscription
mardi 23 décembre 2008
Statut
Membre
Dernière intervention
3 février 2009

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.

Merci
Messages postés
146
Date d'inscription
dimanche 23 janvier 2005
Statut
Membre
Dernière intervention
17 novembre 2009
1
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  !

@+