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 :

Actions et pourcentage


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite Avatar de cadoudal56
    Profil pro
    Inscrit en
    Février 2005
    Messages
    694
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2005
    Messages : 694
    Par défaut Actions et pourcentage
    Bonjour,

    Voila ce qui m'amène....

    J'ai une base de données dans laquelle j'enregistre des éléments. Par exemple des voitures. Il y a 8 niveaux de voitures.

    J'aimerais générer 100 voitures dans ma base, mais surtout j'aimerais générer mes voitures au hasard pour que l'on ne puisse pas les répérer au premier coup d'oeuil par leurs identifiants....

    D'autre part j'aimerais pouvoir générer mes voitures pour qu'a la fin il y ai plus de voitures d'un certain niveau par rapport aux autres

    Donc je me suis dit que je pourrais faire quelque chose comme ceci :

    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
     
     
    $num = 100;
    //% de voitures par type
    $LevelCoeff = array(1=>5, 2=>10, 3=>15, 4=>20, 5=>15, 6=>15, 7=>15, 8=>5);
    //Compteur
    $res = array(1=>0, 2=>0, 3=>0, 4=>0, 5=>0, 6=>0, 7=>0, 8=>0);
     
            //De 1 à 100
    	for ($x=1; $x<=$num; $x++) {
    	$ok = 0;
                    //Tant que OK n'est pas égal a 1
    		while ($ok == 1) {
                    //Choisi un niveau au hasard
    		$jet = mt_rand(1,8);
                    Si le nombre de voiture crée est inférieur au %
    		if (round(($res[$jet]/$x) * 100) < $LevelCoeff[$jet]) {
    			$res[$jet]++;
                            //Ici je mets mes actions
    			$ok = 1;
    		}
    		}#end while		
    	}#end for
    Seulement cela ne fonctionne pas, un peu comme si il se contrefichait du While, d'ailleurs j'ai l'impression qu'il ne le prends pas en compte...
    Je penses aussi que ce code pourrait être optimisé

    Est ce qu'une ame charitable pourrait me donner un coup de main ?

    Merci d'avance à vous
    Cadoudal56

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 625
    Par défaut
    Hello,

    Une piste :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     //Tant que OK n'est pas égal a 1
    while ($ok == 1) {
    Vois tu l'erreur ?

  3. #3
    Membre émérite Avatar de cadoudal56
    Profil pro
    Inscrit en
    Février 2005
    Messages
    694
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2005
    Messages : 694
    Par défaut
    Hello,

    Ah ben encore une faute de débutant... Ceci dit une fois corrigé cela, j'ai trouvé un autre truc qui faisait tourner le script en rond...

    Donc voici ce sur quoi je me suis arrété. Je poste le bout de code car je ne suis pas tombé sur un code de ce genre sur le forum (et j'ai cherché :-) ).
    Cela pourra être utile a quelqu'un un jour...

    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
     
    //Nombre de voitures a créer
    $num = 100; 
    //Pourcentage par niveau
    $LevelCoeff = array(1=>3, 2=>10, 3=>20, 4=>20, 5=>15, 6=>15, 7=>15, 8=>2);
    //Initialisation des compteurs
    $res = array(1=>0, 2=>0, 3=>0, 4=>0, 5=>0, 6=>0, 7=>0, 8=>0);
     
            //Pour chacune des voitures a créer
    	for ($x=1; $x<=$num; $x++) {
    	$ok = 0;
                    //Tant que ce n'est pas OOK
    		while (!$ok) {
                    //Choisit un niveau entre 1 et 8
    		$jet = mt_rand(1,8);
                    //Pourcentage déja atteint pour ce niveau
    		$percent = round(($res[$jet]/$x) * 100);
                            //Si le percent est inférieur au pourcentage voulu pour le niveau
    			if ($percent <= $LevelCoeff[$jet]) {
    				//Ici j'enregistre en base
     
                                    //J'incremente de 1 sur le nombre de voiture crée pour ce niveau
    				$res[$jet]++;
                                    //C'est OK on sors du While
    				$ok = 1;
    			}
    		}#end while
     
    	}#end for
     
    //Afficher le tableau des résultats par niveau
    print_r($res);
    Voila, en espérant que cela aidera quelqu'un un jour.

    @+
    Cadou
    PS : Et merci a Petibidon pour son coup de main :-)

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

Discussions similaires

  1. Réponses: 12
    Dernier message: 29/01/2024, 16h32
  2. Vb 2008 Express edition ; Pourcentage <= action ;)
    Par jeje25440 dans le forum VB.NET
    Réponses: 2
    Dernier message: 28/02/2012, 21h04
  3. action APRES chargement complet ...
    Par PinGuy dans le forum Delphi
    Réponses: 7
    Dernier message: 06/07/2006, 18h16
  4. [Syntaxe] Action simultanée sur plusieurs élements
    Par FranT dans le forum Composants VCL
    Réponses: 2
    Dernier message: 20/03/2003, 21h20
  5. [Algorithme] Pourcentage de similitude de 2 fichiers
    Par Magy_4 dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 08/11/2002, 23h42

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