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

MFC Discussion :

Pb de rand() qui tourne en boucle


Sujet :

MFC

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 54
    Points : 36
    Points
    36
    Par défaut Pb de rand() qui tourne en boucle
    Salut à tous !!

    j'utilise la fonction rand() ok

    j'initialise comme ca dans ma fonction :
    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
    52
    53
    54
    55
    56
    57
     
    void CMaclass::MaFocntion()
    {
       srand((unsigned)time(NULL);
       int Coche;
       Coche = 0;
       Coche = rand()%3;
     
       if ( Coche == 0)
       {
            if ( Unecomparaison != "Vide")
           {   
              //je traite
           }
           else
           {
              MaFocntion();
            }
        }
        if ( Coche == 1)
       {
            if ( Unecomparaison2 != "Vide")
           {   
              //je traite
           }
           else
           {
              MaFocntion();
            }
        }
        if ( Coche == 2)
       {
            if ( Unecomparaison3 != "Vide")
           {   
              //je traite
           }
           else
           {
              MaFocntion();
            }
        }
       if ( Coche == 3)
       {
            if ( Unecomparaison4 != "Vide")
           {   
              //je traite
           }
           else
           {
              MaFocntion();
            }
        }
     
     
     
     
    }
    mon Pb est que assé souvant mon prog se "plante" puisque mon rand est tjrs a la meme valeur: par exemple qd ma variable Unecomparaison n'est plus à "Vide" et que mon rand est tjrs egal à 0 ( tjrs 0 en boucle), mon prog recommance ma fonction donc ca plante.

    j'ai essayé aussi d'initialiser mon rand au lancement de mon prog => idem

    ma question est : exite il un moyen pour generer un nombre aleatoire, ou une fonction pour appeler une autre fonction aleatoirement ???

    j'ai lu plusieurs post sur le forum mais en vain

    http://www.developpez.net/forums/vie...highlight=rand
    http://www.developpez.net/forums/vie...highlight=rand
    http://www.developpez.net/forums/vie...highlight=rand
    http://www.developpez.net/forums/vie...highlight=rand

    je suis preneur de tout les conseils, et merci d'avance.

    @@+++

  2. #2
    Membre régulier Avatar de Blowih
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 122
    Points : 115
    Points
    115
    Par défaut
    voici une fonction qui renvoi un entier aleatoire entre 0 est max
    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
    int NbAleatoire(unsigned int max)
    {
    	float val;
    	/* on appele la fonction rand(), elle retourne un int entre 0 et la constante RAND_MAX
    	 * il suffit de diviser rand() par RAND_MAX pour avoir un nombre entre 0 et 1.
    	 * il faut penser à caster rand() et RAND_MAX en float sinon on aura une division entiere
    	 * dont le resultat sera quasiment tout le temps 0;
    	 * ensuite on le multiplie par max pour avoir un nombe aleatoier entre 0 et max
    	 */
    	val=(float)rand()/(float)RAND_MAX*max;
     
    	/* on arrondi la valeur de val à l'entier le plus proche
    	 * si la partie decimae de val est > 5, alors on retourne la partie entiere de val +1
    	 * sinon on retourne la partie entiere de val
    	 */
    	if(val-(int)val>.5)
    		return (int)val+1;
    	else
    		return (int)val;
    }
    en esperant que ça peut t'aider.
    Ciao!

  3. #3
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 282
    Points : 11 036
    Points
    11 036
    Par défaut
    L'initialisation n'est censée être effectectuée qu'une seule fois au début du programme, et en tous cas certainement pas en plein milieu d'une boucle.
    L'emploi du modulo n'est pas hyper conseillé pour déduire l'intervalle des nombres à générer.

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 54
    Points : 36
    Points
    36
    Par défaut
    re


    Luc Hermitte => ok, je le remet a l'init de mon prog(comme au debut quoi)

    Blowih => Merci, apres de nombreux tests( c'est pour ca que je ne repond que maintenant), ca fonctionne à merveille encore merci



    @+

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 14/03/2010, 23h36
  2. comment arrêter un programme qui tourne en boucle
    Par isa3000 dans le forum Langage
    Réponses: 12
    Dernier message: 07/09/2009, 17h54
  3. [Quartz] Cron Job qui tourne en boucle
    Par K-Kaï dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 07/02/2008, 12h19
  4. cron qui tourne en boucle
    Par crazykangourou dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 24/09/2007, 15h36
  5. Réponses: 1
    Dernier message: 19/12/2005, 14h00

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