Partage
  • Partager sur Facebook
  • Partager sur Twitter

nombres de combinaisons possivles

pour le loto

    1 janvier 2006 à 14:19:11

    Salut les PHPMEN !
    Je cherche un script qui permet de m'afficher toutes les possibilitées pour le loto de 1 à 49 pour une chaine de 6 nombres et 7 nombres. C'est possible ?

    ex:
    1 2 3 4 5 6
    1 2 3 4 5 7
    1 2 3 4 5 8
    1 2 3 4 5 9
    1 2 3 4 5 10
    1 2 3 4 5 11
    ...........
    jusqu à
    41 42 43 44 45 49
    • Partager sur Facebook
    • Partager sur Twitter
      1 janvier 2006 à 14:23:07

      Heu, t'es sur que tu veux tout afficher, parceque des possibilités, il y en a... 14 millions pour 6 chiffres et 86 millions pour 7 chiffres...
      • Partager sur Facebook
      • Partager sur Twitter
        1 janvier 2006 à 14:56:21

        Alors il te faudrai un script de ce genre:

        Tu prends par exemple une variable tableau de 6 ou 7 entrées
        $t[0]
        $t[1]
        ...
        $t[5]
        Tu fais une grande boucle qui dit que tant que le premier chiffre est différent de 44, le deuxième différent de 45, ..., tant que le dernier chifre est différent de 49.
        Astuce: while($t != array(44, 45, 46, 47, 48 ,49)
        Tu peux générer dynamiquement array(44, 45, 46, 47, 48 ,49) avec la fonction range()

        Pour l'optimisation, si tu génères le tableau avec range(), stockes le résultat dans une variable avant la boucle et utilise la pour la condition dans la boucle, ca évitera de d'appeler 14 millions de fois la fonction range() ;)

        Tu sauvegardes ton tableau au début de la boucle ;) (tu veras pourquoi!)
        Ensuite, dès que un chiffre arrive à 50, tu regardes ton tableau sauvegardé et tu remets ce chiffre à ce qu'il valait +1, ainsi que le chiffre d'avant.
        Exemple: $t[4] = 12 et $t[5] = 49, alors au tour suivant, $t[4] = 13 et $t[5] = 14 (ce quicorrespondra a la valeur sauvegardée +1)

        Voila, je pense que tu as tous les éléments pour faire çà! Je pense également quecette technique ne te génères pas deux fois la même grille (en ne tenant pas compte de l'ordre des numéros)
        • Partager sur Facebook
        • Partager sur Twitter
          1 janvier 2006 à 15:07:21

          ok merci d avoir pris du temps pour m expliquer je vais essayer tout ca ^^
          • Partager sur Facebook
          • Partager sur Twitter
            1 janvier 2006 à 15:17:28

            M'étonnerait fort que ta boucle s'éxécute dans les 30 secondes autorisée pour l'exécution d'un script !!!!!! :-°
            • Partager sur Facebook
            • Partager sur Twitter
              1 janvier 2006 à 15:25:13

              erf j ai du mal vous pouvez ecrir un bout du code svp ? o_O
              sinon c'est surtout le code qui m interresse pas les 16 millions de resultats ^^
              • Partager sur Facebook
              • Partager sur Twitter
                1 janvier 2006 à 19:05:47

                savagerman, comment t'as réussi à calculé le nombre de possibilités?
                • Partager sur Facebook
                • Partager sur Twitter
                  1 janvier 2006 à 19:47:49

                  avec une formule d'analyse combinatoire :D
                  • Partager sur Facebook
                  • Partager sur Twitter
                    2 janvier 2006 à 9:42:55

                    je me permet de faire un ptit UP ! ;)

                    SVP il me le faut ce code. :euh:
                    • Partager sur Facebook
                    • Partager sur Twitter
                    Anonyme
                      2 janvier 2006 à 9:58:06

                      Moi je peut po t'aider mais par contre j'aimerais bien savoir ce qu'est une formule d'analyse combinatoire ^^
                      • Partager sur Facebook
                      • Partager sur Twitter
                        2 janvier 2006 à 10:04:15


                        Faudrait une section algo ici... :p
                        • Partager sur Facebook
                        • Partager sur Twitter

                        Python c'est bon, mangez-en. 

                          2 janvier 2006 à 10:36:11

                          j'ai essayé pour 2 nombre mais ca marche po :(

                          <?

                          $x1 = 1;
                          $x2 = 1;

                          while($x1 <= 9)
                          { 
                            echo "x1= $x1 et x2 = $x2";
                              if ($x2 == 9)
                              {
                                $x1++;
                              }
                           
                            $x2++;
                              if($x1 == 9 AND $x2 == 9)
                              {
                                break;
                              }
                             
                          }

                          ?>
                          • Partager sur Facebook
                          • Partager sur Twitter
                            2 janvier 2006 à 10:53:07

                            tu peux faire un compteur en base 49 à 6 ou 7 digits qui ne retient que les valeurs pour lesquelles aucun digit ne fait doublon.
                            • Partager sur Facebook
                            • Partager sur Twitter

                            Python c'est bon, mangez-en. 

                              2 janvier 2006 à 11:12:09

                              pour le code ci dessus j ai trouvé
                              <?

                              $x1 = 1;
                              $x2 = 1;

                              while($x1 <= 9)
                              { 
                               echo "$x1 $x2 <br>";
                               
                                  if ($x2 == 9)
                                  {
                                        echo "<br>";
                                        $x2 = 0;
                                    $x1++;
                                  }
                               
                               
                                  if($x1 == 9 AND $x2 == 9)
                                  {
                                    break;
                                  }
                               $x2++; 
                              }

                              ?>


                              sinon comment on fait ce compteur avec la "fonction sans" doublon ?
                              • Partager sur Facebook
                              • Partager sur Twitter
                                2 janvier 2006 à 11:44:52

                                Voilà j'ai refait un peu ton code et cela t'affiche toute les possibilitées pour deux nombre de 1 à 9.

                                        $nb = 1;//x
                                        $nbr = 1;//X

                                        while($nb <= 9)
                                                {
                                        echo "x= $nb et X = $nbr <br /> ";
                                                if($nb <= 9)
                                                        {
                                                $nb++; 
                                                        }
                                                if ($nb == 10)
                                                        {
                                                $nbr++;//On incrémente le deuxième nombre quand le premier arrive à 10
                                                $nb = 9 - ( 9 - $nbr);//Là en fait j'ai détaillé, il faut  juste que tu enlève à 9 la valeur du deuxième nombre, le resultat tu l'applique au premier nombre
                                                        }
                                                }

                                • Partager sur Facebook
                                • Partager sur Twitter
                                  2 janvier 2006 à 11:49:20

                                  Citation : the_fear

                                  Moi je peut po t'aider mais par contre j'aimerais bien savoir ce qu'est une formule d'analyse combinatoire ^^



                                  49*48*47*46*45*44 et tu as le nombre de possibilités (C'est avec les factorielles ;))
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    2 janvier 2006 à 11:54:41

                                    Nombre de possibilités de prendre x nombres parmi y = factorielle(y) divisé par ( factorielle(k)*factoriell(n-k) )

                                    Remplace k par 6 ou 7 et n par 49, tu auras le résultat!
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      2 janvier 2006 à 12:05:56

                                      Lu,

                                      Cours de Mathématiques niveau Première/Terminale :

                                      En fait, ce qui vous interresse est parmi les cours de probabilité (c'est l'univers).

                                      -----------

                                      3 Types pour déterminer le nb de cas total :

                                      ¤ ARRANGEMENT :

                                      SANS remise AVEC ordre

                                      Ex : 6 boules a choisir parmis les 49.

                                      Arrangement de 6 parmi 49 = 49*48*47*46*45*44

                                      ¤ COMBINAISON :

                                      SANS remise SANS ordre

                                      Ex : 32 cartes, on en tire 5 au hasard

                                      Combinaison de 5 parmi 32 = 32!/(32-5)!5! (où ! signifie factorielle 32!= 32*31*...*1 par exemple)

                                      ¤ PUISSANCE :

                                      AVEC remise

                                      Ex : 30 boules, 5 tirage de 1 boule

                                      30*30*30*30*30=30^5

                                      Amicalement,
                                      Jordan

                                      Vive les Maths ! :-°
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        2 janvier 2006 à 12:17:40

                                        c'est chaud pépite tout ça ! o_O
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          2 janvier 2006 à 13:43:05

                                          Bon, voila pour ton truc...
                                          Bon, perso, en 30 secondes, mon pc va jusque
                                          1, 5, 6, 33, 44, 49...
                                          Alors faut pas que tu sois pressé...
                                          <?php

                                          $t = array(1, 2, 3, 4, 5, 6); // Tableau de départ
                                          $max = 49; // Plus grand chiffre


                                          $nb = count($t)-1;
                                          $final = range($max-$nb, $max);
                                          $max = $max +1;

                                          while(1) {
                                                  // Affichage
                                                  echo implode(', ', $t).'<br />';
                                                  if ($t == $final) { break 1; }
                                                  $t[$nb] += 1;
                                                  if ($t[$nb] == $max) {
                                                          update($t, $nb-1, 0);
                                                  }
                                          }
                                          // Mise à jour du tableau si on atteint le maximum
                                          function update(&$t, $nb, $i) {
                                            global $max;
                                                  $t[$nb] += 1;
                                                  if ($t[$nb] == $max-($i+1)) {
                                                          update($t, $nb-1, $i+1);
                                                  }
                                                  $t[$nb+1] = $t[$nb]+1;
                                          }

                                          ?>
                                          • Partager sur Facebook
                                          • Partager sur Twitter

                                          nombres de combinaisons possivles

                                          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                          • Editeur
                                          • Markdown