Partage
  • Partager sur Facebook
  • Partager sur Twitter

Premier TP

le générateur de M@teo a un défaut.

    6 février 2006 à 22:12:13

    Bonjour, j'aimerais vous faire part d'une remarque, je ne sais pas si quelqu'un l'a déjà remarquer (ce n'est qu'un petit détail), mais la formule pour générer un nombre aléatoirement entre 1 et 100 à un gros défaut, en effet. J'ai compiler et exécuter plusieur fois, a chaque génération, le chiffre n'a cesser d'augmenter. Je m'explique:
    1ere compilation: 37
    2eme compilation: 46
    3eme compilation: 52
    4eme compilation: 59
    Je l'ai recompiler une vingtaine de fois et j'ai remarquer que jamais je ne trouver un nombre en dessous de la compilation précédente, sauf lorsque j'arrivais près des 100, il revenait au premier chiffre.

    J'aurais aimer savoir pourquoi et s'il y avait un autre système pour généré un nombre aléatoire compris entre Y et Z.

    Voici la formule de M@teo:
    const long MAX = 100, MIN = 1;
    long nombreMystere = 0, nombreEssai = 0;
    nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
    • Partager sur Facebook
    • Partager sur Twitter

    Envie de créer un jeu web? Quelque soit le langage, retrouve la communauté JeuWeb

    Page perso: https://www.maz.digital

      6 février 2006 à 22:38:04

      Je l'ai remarquer aussi ce default mais c'est normal.
      la fonction donner par m@téo21 pour généré un nombre aléatoire est basé en fonction du temps.
      Tout le monde sait qu'il est numérique et que le numérique n'admet pas de hasar. donc il ne peut que ce fier à un nombre qui change tout le temps donc le temps qui lui augmente contament.
      Donc si mon explication est correct, il n'y à aucun moyen de généré un vrai nombre dit aléatoire.

      Enfin je pense ^^^^

      EDIT : Mois par exemple pour avoire un nomvre un peu plus aléatoire j'ai mis
      srand((int)time(NULL)+(time(NULL)/ha)+time(NULL));

      Où "ha" est un nombre qui augmente assez souvent dans le jeu.
      • Partager sur Facebook
      • Partager sur Twitter
        6 février 2006 à 22:41:51

        ton nombre augmente d'un par secondes car le nombre est généré en fonction du temps . pour un nombre plus aléatoire , tu dois mettre plus de facteurs , par exemple avec des variables aux valeurs définies par l'utilisateurs ( pour un jeu vidéo par exemple , le nombre de pas )
        • Partager sur Facebook
        • Partager sur Twitter
          7 février 2006 à 8:29:58

          Et bien merci pour toutes ses informations.
          • Partager sur Facebook
          • Partager sur Twitter

          Envie de créer un jeu web? Quelque soit le langage, retrouve la communauté JeuWeb

          Page perso: https://www.maz.digital

            7 février 2006 à 10:41:39

            L'ordinateur ne sait pas ce que veut dire "aléatoire" en effet, tout cela est du bidouillage et le temps est le bidouillage le plus simple qu'on ait trouvé pour avoir quelque chose d'"aléatoire".
            • Partager sur Facebook
            • Partager sur Twitter

            If you'd like to join us, read "How do we work at OpenClassrooms"! :)

              7 février 2006 à 20:55:46

              [cf le très bon tuto de Natim sur le sujet :

              Nombres aléatoires ]
              • Partager sur Facebook
              • Partager sur Twitter
                8 février 2006 à 9:51:02

                  static int i = 0;
                  int    j;

                  j = le nombre max que tu veux;
                  if (i == 0)
                    {
                      srand (time (NULL));
                      i  = 1;
                   }
                  return (rand() % j);


                Et voila c'est fini, apres tu peux meme faire mieux, créer ta propre fonction random :

                int      ma_fonction_random(int nbr_max)
                {
                  static int i = 0;

                  if (i == 0)
                    {
                      srand (time (NULL));
                      i  = 1;
                   }
                  return (rand() % nbr_max);
                }

                int      main()
                {
                   printf(ma_fonction_random(5));
                }



                La il va te chercher un nombre entre 0 et 5 ;)
                • Partager sur Facebook
                • Partager sur Twitter

                Premier TP

                × 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