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

Langage PHP Discussion :

Boucle sans doublon


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de avogadro
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 412
    Par défaut Boucle sans doublon
    bonjour,

    petit probleme, je m'explique, jai initialement un tableau rempli comme ca disons:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    CN,CN,CN
    CN,CN,CN
    CN,CN,CN
    et j'utilise cette fonction pour modifier certaine des valeur du tableau :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    	for ($i=0;$i<=$nb_mines-1;$i++){
    	$x = rand( 0, $nb_lignes-1 );
    	$y = rand (0 , $nb_colonnes-1 );
    	$array[$x][$y] = 'CO';
    	}
    mais il peut y avoir des boublon ici, je veux juste éviter que la fonction tombe sur quelque chose du genre sur toute la durée du for:


    Quelqu'un aurait il une idée? :s

  2. #2
    Membre émérite Avatar de FCYPBA
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 745
    Par défaut
    Si je comprends bien tu veux que x et y ne soit jamais identique à des valeurs précédement générées.

    Pour cela, je pense qu'il te suffit de stocker les valeurs générées dans un tableau et de faire le rand tant que la valeur est présente au sein du tableau.

  3. #3
    Membre éclairé Avatar de avogadro
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 412
    Par défaut
    javais pensé a ca mais je cherchais plus simple, est je pense que ca, ca l'est !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    	for ($i=0;$i<=$nb_mines-1;$i++){
    		do{
    		$x = rand( 0, $nb_lignes-1 );
    		$y = rand (0 , $nb_colonnes-1 );	
    		}while($array[$x][$y]!='CO');
    	$array[$x][$y] = 'CO';
    	}
    mais on dirais que ma page charge sans fin !

  4. #4
    Membre Expert

    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 249
    Par défaut
    deja utilise mt_rand au lieu de rand ;o)

  5. #5
    Membre éclairé Avatar de avogadro
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 412
    Par défaut
    c'est une fonction plus rapide que rand, ca résoud pas le probleme ^^

  6. #6
    Membre éclairé Avatar de avogadro
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 412
    Par défaut
    tu as raison je viens de le voir lol ^^

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    	for ($i=0;$i<=$nb_mines-1;$i++){
    		do{
    		$x = mt_rand( 0, $nb_lignes-1 );
    		$y = mt_rand (0 , $nb_colonnes-1 );			
    		}while($array[$x][$y]!='CN');
    	$array[$x][$y] = 'CO';
    	}

  7. #7
    Membre émérite Avatar de FCYPBA
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 745
    Par défaut
    Citation Envoyé par avogadro
    javais pensé a ca mais je cherchais plus simple, est je pense que ca, ca l'est !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    	for ($i=0;$i<=$nb_mines-1;$i++){
    		do{
    		$x = rand( 0, $nb_lignes-1 );
    		$y = rand (0 , $nb_colonnes-1 );	
    		}while($array[$x][$y]!='CO');
    	$array[$x][$y] = 'CO';
    	}
    mais on dirais que ma page charge sans fin !

    Je pense qu'il suffirait de changer laa condition du while. Pour l'instant, la boucle boucle tant que la case ne vaut pas 'CO'. Visiblement au début du script aucune ne vaut 'CO'

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 9
    Dernier message: 27/01/2010, 09h54
  2. [SQL SERVER 2000] Fonction utilisateur : boucle sans fin
    Par galinijay dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 30/09/2005, 16h03
  3. Processus en boucle sans fenêtre ni console
    Par alainpeniche dans le forum Threads & Processus
    Réponses: 1
    Dernier message: 26/07/2005, 17h43
  4. [Postgresql] insertion sans doublon
    Par Pwill dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 08/06/2005, 11h37
  5. Comment mettre à jour une ligne sans doublon via déclencheur
    Par fuelcontact dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 02/08/2004, 15h56

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