IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

EDI, CMS, Outils, Scripts et API PHP Discussion :

Tirage de nombres différents


Sujet :

EDI, CMS, Outils, Scripts et API PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 20
    Par défaut Tirage de nombres différents
    Bonjour à tous ! Je suis bloqué dans un TP PHP, en effet, je dois faire un tableau LOTO avec des nombres aléatoires. Cependant je dois rajouter un moyen de vérifier si les nombres du tableau sont tous différents. C'est ici que je bloque je ne trouve pas le moyen de faire une fonction ou autre dans mon code pour vérifier.
    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
     
    <!DOCTYPE html>
     
    <html>
     
    	<head>
    		<title>Loto</title>
    		<meta charset="utf-8">
    	</head>
     
    	<body>
     
    		<center>
     
    			<table border="1">
     
    				<tr>
     
    					<td>Case 1</td>
    					<td>Case 2</td>
    					<td>Case 3</td>
    					<td>Case 4</td>
    					<td>Case 5</td>
    					<td>Case 6</td>
    					<td>Case 7</td>
     
    				</tr>
     
    				<tr>
     
    <?php
     
    $tableau = array(1, 2, 3, 4, 5, 6, 7);
     
    for ($i=0; $i <= 6; $i++)
    { 
    	$random = rand(1,49);
    	echo "<td>$tableau[$i] = " . $random . "</td>";
    }
     
    ?>
     
    				</tr>
     
    			</table>
     
    		</center>
     
    	</body>
     
    </html>
    Merci beaucoup !

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Il suffit de mettre tes tirages dans un tableau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $range = array(1, 7);
    $n = 6;
     
    $result = array();
    while (count($result) < $n) {
       $random = rand(1, 49);
       if (!in_array($random, $result)) {
           $result[]= $random;
       }
    }
     
    print_r($result);
    en amélioration on vérifiera s'il y a plus de nombres possibles que de nombres demandés, sinon le code tournera à l'infini.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 20
    Par défaut
    Il semblerait que j'ai une erreur avec ton point d'exclamation dans la boucle "if". Peut-être qu'il est mal placé

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Il suffit de bien le placer alors.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Une autre approche :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    <?php
    // numéros de 1 à 49
    $loto = array();
    for($i=1; $i<50; $i++)
    {
    	$loto[] = $i;
    }
    	shuffle($loto); // mélange
    	shuffle($loto); // mélange
     
    // Tirage (6 numéros) + Numéro complémentaire
    $tirage = array();
    $num = 0;
    while( $num<6 )
    {
    	shuffle($loto); // mélange
    	$tirage[] = $loto[0]; // on prend le 1er
    	unset($loto[0]); // on supprime le 1er
    	$num++;
    }
    	shuffle($loto);
    	$complementaire = $loto[0];
    // Affichage
    echo '<p>Tirage du loto : '.implode(', ',$tirage).'</p>';
    echo '<p>Numéro complémentaire : '.$complementaire.'</p>';
    ?>
    Puisqu'à chaque tirage on supprime le numéro de l'array $loto, plus de risque d'avoir 2 fois le même numéro.
    Dernière modification par Invité ; 07/04/2018 à 09h22.

  6. #6
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Salut,

    quand tu maîtriseras PHP, cela prendra 3 lignes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    <?php
    $nums = range(1, 49);
    shuffle($nums);
    $head   = array_map(function($p) { return "<th>Case {$p}</th>"; }, range(1, 7));
    $tirage = array_map(function($p) { return "<td>{$p}</td>"; }, array_slice($nums, 0, 7));
    ?>
    <!DOCTYPE html>
    <html>
    <head>
    <title>Loto</title>
    <meta charset="utf-8">
    </head>
    <body>
    <table border="1">
        <thead>
            <tr><?= implode('', $head) ?></tr>
        </thead>
        <tbody>
            <tr><?= implode('', $tirage) ?></tr>
        </tbody>
    </table>
    </body>
    </html>

Discussions similaires

  1. [VxiR2] Numéro de ligne dans un tableau
    Par pnoel-bi dans le forum Deski
    Réponses: 1
    Dernier message: 09/05/2016, 05h13
  2. [Débutant] Récupérer le numéro du rang d'un élément dans un tableau
    Par PapouMAC dans le forum VB.NET
    Réponses: 4
    Dernier message: 03/01/2016, 21h20
  3. Réponses: 2
    Dernier message: 07/09/2010, 12h39
  4. [WD-2003] Champ Numéro de page dans un tableau
    Par cire190 dans le forum VBA Word
    Réponses: 3
    Dernier message: 06/05/2010, 19h59
  5. Mettre numéros dans tableau
    Par GarsDuCalvados dans le forum Langage SQL
    Réponses: 13
    Dernier message: 22/05/2009, 15h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo