Boucle pour loto

Résolu
cs_simon0000 Messages postés 90 Date d'inscription lundi 25 juillet 2005 Statut Membre Dernière intervention 18 janvier 2006 - 28 août 2005 à 19:39
yanic2020 Messages postés 1 Date d'inscription dimanche 18 janvier 2009 Statut Membre Dernière intervention 18 janvier 2009 - 18 janv. 2009 à 17:25
bonjoir j'ai fait ce code pour avoir tous les nombre possible dans le loto mais ca ne marche pas est ce que quelque un pourait m'aider

<?
$cs = array("0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,15,16,17,k18,19,20,21,22,23,24,25);


for($a=0;$i<sizeof($cs);$i++) {
for($b=0;$i<sizeof($cs);$i++) {
for($c=0;$i<sizeof($cs);$i++) {
for($d=0;$i<sizeof($cs);$i++) {
for($e=0;$i<sizeof($cs);$i++) {
for($f=0;$i<sizeof($cs);$i++) {


echo ''.$cs[$a].''.$cs[$b].''.$cs[$c].''.$cs[$d].''.$cs[$e].''.$cs[$f].'
';


}
}
}
}
}
}
echo 'fin'
?>
A voir également:

13 réponses

JoJo738 Messages postés 1267 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 29 juin 2010 2
28 août 2005 à 21:38
Hello,

<?php

$cs = array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9);

for($a=0;$ a <sizeof($cs);$a++) {

for($b =0;$b<sizeof($cs);$b++) {

for($c= 0;$ c <sizeof($cs);$c++) {

for($d =0;d<sizeof($cs);$b++) {

for($e= 0;$ e <sizeof($cs);$e++) {

for($f =0;$f<sizeof($cs);$f++) {

echo ''.$cs[$a].''.$cs[$b].''.$cs[$c].''.$cs[$d].''.$cs[$e].''.$cs[$f].'
/>';

}

}

}

}

}

}

echo 'fin'

?>

<hr>Si ma reponse te convient, merci de l'accepter !
3
malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 17
28 août 2005 à 19:56
array(" ... vire les quotes là pour commencer. Ensuite je sais pas quel
est ton but, mais ton code là va te donner 26 puissance 6 tirages!
C'est énorme...






*****
THINK -> SEEK -> ASK
0
cs_simon0000 Messages postés 90 Date d'inscription lundi 25 juillet 2005 Statut Membre Dernière intervention 18 janvier 2006
28 août 2005 à 20:53
oui c'est ^parce que je ve tous les resultat possible mais avec ce code le resultat c'est
111111
111111
111111
...............
selement des 11111


<?
$cs = array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9);
for($a=0;$i<sizeof($cs);$i++) {
for($b=0;$i<sizeof($cs);$i++) {
for($c=0;$i<sizeof($cs);$i++) {
for($d=0;$i<sizeof($cs);$i++) {
for($e=0;$i<sizeof($cs);$i++) {
for($f=0;$i<sizeof($cs);$i++) {
echo ''.$cs[$a].''.$cs[$b].''.$cs[$c].''.$cs[$d].''.$cs[$e].''.$cs[$f].'
';
}
}
}
}
}
}
echo 'fin'
?>
0
cs_simon0000 Messages postés 90 Date d'inscription lundi 25 juillet 2005 Statut Membre Dernière intervention 18 janvier 2006
28 août 2005 à 21:01
des 000000000 a la place des 1111111111
pardon
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Evangun Messages postés 1980 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 24 septembre 2012 4
28 août 2005 à 21:42
salut,

à chaque fois tu mets for($f=0;$i<sizeof($cs);$i++) alors que ce serait plutôt for($f=0;$i<sizeof($cs);$f++) il
me semble... mais de tte façon je doute que ça marche, le délai
d'exécution du script sera trop long... enfin faut voir. En tt cas ça
risque de chauffer
0
Evangun Messages postés 1980 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 24 septembre 2012 4
28 août 2005 à 21:44
oui mince je voulais dire for($f=0;$i<sizeof($cs);$f++) mais je vois que jojo m'a précédé
0
Evangun Messages postés 1980 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 24 septembre 2012 4
28 août 2005 à 21:45
rahhhh for($f=0;$f<sizeof($cs);$f++) c'est pas potible ça dsl :p
0
JoJo738 Messages postés 1267 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 29 juin 2010 2
28 août 2005 à 22:02
C'est pas potible ca, Non c'est pas potible ca !! Ca ca non, c'est pas
potible !! On n'as l'abbé Pierre II (Enfin, je crois que c'est lui qui
dit ca ... suis plus tres sûr ...)



PS : C'etait la minute de folie de Jojo en directe de PhpCs. A vous CodeSourceS. ^^

Attention, c'est contagieux ! Hey, mais revenez, partez pas comme ca ... BOn, j'arrete ^^

<hr>Si ma reponse te convient, merci de l'accepter !
0
syl20dies Messages postés 13 Date d'inscription mardi 21 octobre 2008 Statut Membre Dernière intervention 29 janvier 2009
21 oct. 2008 à 09:25
Bonjour tout le monde, cette réponse à été aceptée mais je constate 3 problemes:
1) il y a un $b++ à la place de $d++; on comprends le principe mais pour ceux qui voudraient faire du copier coller...
2) il n'y a pas de 0 au loto il faudrait donc que le tableau commence à 1
3) 2 boules ne pouvant sortir sur un même tirage,ce n'est pas 26 puissance 6 tirages mais 26!/6!(26-6)! tirages qu'il faudrait obtenir
ci-joint une légère modification pour arriver à ce résultat.
cordialement

Hello,
<?php
$cs = array(1, 2, 3, 4, 5, 6, 7, 8, 9);
for($a=0;$ a <sizeof($cs);$a++)    {
for($b =$a+1;$b<sizeof($cs);$b++)    {
for($c= $ b+1 ;$c<sizeof($cs);$c++)    {
for($d =$c+1;$d<sizeof($cs);$d++)    {
for($e= $ d +1;$e<sizeof($cs);$e++)    {
for($f =$e+1;$f<sizeof($cs);$f++)    { 
 echo ''.$cs[$a].''.$cs[$b].''.$cs[$c].''.$cs[$d].''.$cs[$e].''.$cs[$f].'
/>';
    }
    }
    }
    }
    }
    }
echo 'fin'
?>
0
JoJo738 Messages postés 1267 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 29 juin 2010 2
25 oct. 2008 à 12:39
Hello,

exacte ;)

On pourrais aussi simplifier le calcul de manière suivante :

<?php

// si besoin :  srand() ou mt_srand() pour intensifier le générateur de nombre aléatoire (< Php 4.2.0)
$grille = range(1,49); // On crée une grille (tableau) comportant les nombres allant de 1 à 49
$tirage = array_rand($grille, 6); // On prend 6 valeurs du tableau !

$resultats = array();
foreach( $tirage as $num )
{
    $resultats[] = $num;
}

echo 'Le tirage est :  [', implode('] - [', $resultats), ']';

?>

^^
<hr />Si ma réponse te convient, merci de l'accepter ! 
0
syl20dies Messages postés 13 Date d'inscription mardi 21 octobre 2008 Statut Membre Dernière intervention 29 janvier 2009
26 oct. 2008 à 19:11
'lu, merci pour l'illustration de la fonction array_rand() qui à ma connaissance n'existe pas en AS duquel je suis plus familier que le php.(J'en etais même allé jusqu'à m'ecrire une classe pour en disposer ;-( ).
Ceci etant, si je comprends bien le code proposé, il ne génère qu'un seul tirage, non? la problématique de départ consistait à générer l'ensemble des combinaisons possibles si je ne m'abuse.
aussi si tel etait le but, je ne pense pas que cette orientation consiste réellement en une simplification, vu qu'il faudrait pour chaque nouveau tirage vérifier s'il n'as pas été déjà généré, et réiterer jusqu'à l'obtention d'un nouveau tirage unique.Je pense qu'une telle procédure s'avererait particuliairement gourmande vers la fin, voire même au vu du nombre de combinaisons (+/- 14M) je ne sais pas si l'on peut esperer obtenir les dernieres combinaisons avant plusieurs décénies? qu'en penses-tu?
0
JoJo738 Messages postés 1267 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 29 juin 2010 2
26 oct. 2008 à 19:34
Salut,

Euh, oui, il ne génère qu'un seul tirage et retourne une combinaison de 6 nombres différents. Ici c'est juste pour générer qu'un tirage possible. Ce sujet date, je n'y avait plus pensé ^^
Par contre, il est vrai que la combinaison n'est pas unique, donc pour avoir TOUTES les combinaisons, il faudrait une boucle très très gourmande ... et beaucoup de temps.

Il ne reste donc que les boucles for/while  ...
Mais je pense que l'on peut simplifier le code avec quelques fonctions array (je ne me souviens plus des noms). Je regarderais ça dans la soirée ... (par contre, je crois que ce sera plus gourmand niveau serveur)

<hr />Si ma réponse te convient, merci de l'accepter ! 
0
yanic2020 Messages postés 1 Date d'inscription dimanche 18 janvier 2009 Statut Membre Dernière intervention 18 janvier 2009
18 janv. 2009 à 17:25
Code :template<class X>
std::string Ensemble<X>::binaryincrementation(std::string origine) const
//Cette fonction permet de réaliser l'incrémentation unaire d'une chaine de caratère formée uniquement par une suite de 0 ou de 1.
{
 unsigned int cpt=1;//Ceci nous limite malheureusement à une chaine de 32000 caractères (mais qui va calculer 2^32000 opérations ? =) )
 bool retenue=false;
 while ( cpt <= origine.length() )
    {
       if ( origine[ origine.length() - cpt ] == '0' &amp;&amp; retenue == false &amp;&amp; cpt == 1)
 //cette condition n'est valable que pour le dernier caractère de la chaine que l'on veut
 //incrémenter car il est strictement impossible que l'on arrive sur un caractère de la chaine
 //avec un 0 et la retenue à false car si la retenue est à false, cela implique que l'opération
 //d'incrémentation sur le caractère qui le suit n'à pas engendré de retenue.
 {
  origine[origine.length() - cpt] = '1';
  return origine;
 }
           
 if ( origine[ origine.length() - cpt ] == '0' &amp;&amp; retenue == true )
 //l'opération précédente à engendré une retenue que l'on applique sur ce caractère
 //(cette condition n'est jamais vraie pour le premier caractère)
 {
  origine[origine.length() - cpt] = '1';
  return origine;
 } 


 if ( origine[ origine.length() - cpt ] == '1' &amp;&amp; retenue == true )
 //l'opération précédente à engendré une retenue, et l'application de la retenue ici génère
 //également une retenue que l'on appliquera sur le caractère précédent
 {
  origine[origine.length() - cpt] = '0';
  retenue = true;
 }  


 if ( origine[ origine.length() - cpt ] == '1' &amp;&amp; retenue == false )
 //cette opération n'est vraie que dans le cas ou l'on est sur le dernier caractère de la chaine
 //et que la retenue est à false.
 {
  origine[origine.length() - cpt] = '0';
  retenue = true;
 }   
      cpt++;
   }   
 return origine;
}


template<class X>
Ensemble< Ensemble<X> > Ensemble<X>::question14()
//méthode permettant de retouner un ensemble de sous-ensembles d'une ensemble donné
{
 unsigned int cpt=1;
 const unsigned int taille=Size();
 std::string compteur, complement;
 Ensemble< Ensemble<X> > retour;
 Ensemble<X> *temporaire=NULL;
 element * navigation;
 //on initialise la chaine de base ainsi que son complément pour pouvoir appliquer la méthode de construction
 //de l'ensemble final.
 while ( cpt <= taille )
  //ici on préfère utiliser une constante que de faire appel à la fonction size à chaque boucle
  //qui impliquerait à chaque fois un parcours de l'ensemble à chaque itération.
  {
  compteur=compteur+'0';
  complement=complement+'1';
  cpt++;
 }
 cpt=1;
 //pour chaque valeur de compteur allant de sa valeur initiale jusqu'à ce qu'il ait la même valeur
 //que son complément original, on ajoute l'élément i de l'ensemble d'origine à l'ensemble n élément de retour
 //(ou n est l'énième itération ) en fonction de la valeur du caractère positionné à (longueur de retour - i)
 //dans compteur. Si ce caractère est à 1 alors on l'inclut à l'ensemble n, sinon, on ne l'inclut pas.
 //
 // on donne l'ensemble e contenant les éléments de type int {0,1,2,3}
 //
 // e [ 3 ][ 2 ][ 1 ][ 0 ]
 //compteur    0    0    0    0   => on ajoute l'ensemble vide
 //    0    0    0    1   => on ajoute l'ensemble {0}
 //    0    0    1    0   => on ajoute l'ensemble {1}
 //    0    0    1    1   => on ajoute l'ensemble {0,1}
 while ( compteur != complement )
  {
  //on crée un sous-ensemble dynamiquement en mémoire
  temporaire = new Ensemble<X>;
  while ( cpt <= taille ) //taille vaut la même chose que compteur.length()
   {
   if ( compteur[ taille - cpt ] == '1' )
    //si le caractère vaut 1 alors on ajoute l'élément au sous-ensemble
    {
    temporaire->Add((*this)[cpt]);
   }
   cpt++;
  }
  cpt=1;
  //on ajoute le sous-ensemble de l'itération à l'ensemble final
  retour.Add( *temporaire );
  compteur=binaryincrementation(compteur);
 }


 //cette façon de faire implique que l'on fasse la même opération lorsque compteur vaut complement
 //a savoir que c'est le sous-ensemble qui contient tous les éléments de l'ensemble original.
 temporaire = new Ensemble<X>;
 while ( cpt <= taille )
  {
  temporaire->Add((*this)[cpt]);
  cpt++;
 }
 //on ajoute le dernier cas
 retour.Add( *temporaire );
 return retour;
}
0
Rejoignez-nous