Partage
  • Partager sur Facebook
  • Partager sur Twitter

ran()

Sujet résolu
    6 décembre 2005 à 21:13:49

    Bonjours à tous
    Mon problème est ce fameux rand()
    Je voudrais pour un mini jeux avoir un nombre totalement aléatoire alor j'ai placé dans mon code ces quelques lignes :

    unsigned long nombre;
    nombre=(rand()%100)+1;

    Comme je l'ai vue dans une autre parti de ce forum
    Mais j'aimerais savoir pourquoi mon nombre est toujours (je dit bien toujours)égale à 41
    Merci d'avance pour vos reponse précieuse.
    Bonne soiré
    PS : oui car on est le soir :p:p:p
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      6 décembre 2005 à 21:18:30

      Au début du programme il faut include <time.h> et un peu avant d'utiliser rand faire un srand(time(NULL)) cat le fonctionnement ne la génération de nombres aléatoires est telle qu'il faut d'abord générer une liste de nombre, en fonction ici du temps qui n'est jamais le même, puis après prendre des nombres dans cette liste. Si tu ne fais aps de srand, la liste est toujours la même et tu tombes sur les mêmes suites de random.

      ;)
      • Partager sur Facebook
      • Partager sur Twitter
        6 décembre 2005 à 21:19:18

        grilled :lol:

        C'est très simple, rend() se base sur un nombre, donc si il n'y en a aucun de précisé, ce nombre est toujours le même, donc le rand est toujours le même ;)
        La seule manière de faire un random vraiment aléatoire, est de se baser sur un nombre qui change, et le plus courant est ... la date ;)

        Voici ma façon de procéder :

        int random(int min, int max)
        {
           
            if( min < max )
                 return ( rand() % ( max+1-min ) ) + min;
            else
                 return 0;
                 
        }


        Ca c'est la fonction qui j'utilise, qui est similiaire à ta technique, mais c'est plus pratique ! Pour générer un nombre entre 1 et 100 :

        int nb = random(1, 100);


        Mais ça ne change rien, ça c'était pour l'efficassité, il faut initialiser le rand avec une valeur aléatoire, il faut donc placer dans la fonction main, ceci :

        srand( (unsigned)time( NULL ) );


        Voila, chez moi ça marche !

        Note qu'il faut inclure <time.h> pour faire fonctionner la fonction du temps ^^

        PS: les int min et max sont inclus pour le random, donc random(1, 100) pourra etre egal a 1 ou 100 !

        Ciao
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          6 décembre 2005 à 21:20:41

          c'est car tu a un nombre pseudo aleatoire .
          tape

          srand((int)time(NULL));/*initialisation du syteme aleatoire dans le exe finale*/
          nombre=rand()%100;/*nombre vaut un nombre aleatour entre 1 et 100*/

          Et c'est tous.
          • Partager sur Facebook
          • Partager sur Twitter
            7 décembre 2005 à 10:46:19

            Ok merci à tous pour cette information.
            j'espere que m'a stupidité à aidé d'autre ZERO comme moi.
            • Partager sur Facebook
            • Partager sur Twitter

            ran()

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown