Partage
  • Partager sur Facebook
  • Partager sur Twitter

Du bon pseudo-aléatoire?

    28 janvier 2006 à 12:08:29

    Salut tout le monde.

    Je suis entrain de faire un petit jeu en SDL, mais un problème se pose.
    J'ai besoin de générer des nombres aléatoires pour certaines actions ( apparition des ennemis, placement des ennemis etc...)
    Mahleuresement, mes nombres aléatoire mettent quelques secondes a changer.
    J'utilise la fonction rand() et srand(time(NULL)); pour initialiser.

    Existe-il un moyen de générer des nombres entiers aléatoires différents dans un intervalle de temps très reduits, comme :


    int x;
    srand(cequilfaut);
    While (1)
    {
    x = rand(cequejeveux);
    printf("%ld", x);
    }


    Il faudrait qu'à chaque lecture de la boucle, la console m'affiche un entier différent, or ce n'est pas le cas.

    J'ai fais des recherches un peu partour mais tout le monde parle de srand(time(NULL)); je me demande si il n'existe pas une solution indépendante du temps.
    Aussi , si il existe une fonction en SDL pour générer des entiers aléatoire, cela m'ira très bien :)
    • Partager sur Facebook
    • Partager sur Twitter
      28 janvier 2006 à 12:12:44

      Mmmh... Il suffirait de faire un tableau que stockerait les nombres, et de vérifier que le rand ne retourne pas un des ces nombres... Sinon, il re random.
      • Partager sur Facebook
      • Partager sur Twitter
        28 janvier 2006 à 12:15:28

        Bah je veux dire : Tu initialises à partir du temps mais normalement chaque appel à rand() après srand() renverra un nombre "différent", faut juste pas srand() plusieurs fois, ce qui produirait plusieurs fois les mêmes nombres. Evidemment, si tu srand() plus d'une fois en une seconde...
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          28 janvier 2006 à 12:21:04

          Tu inclus <time.h> et tu fais un srand (time (NULL)); il faut initialiser srand une seule fois et avec une valeur qui changera à chaque fois au lancement du programme, comme le temps.

          Et aussi : int x; donc %d dans printf et pas %ld.
          • Partager sur Facebook
          • Partager sur Twitter
            28 janvier 2006 à 12:31:13

            Merci pour le %d louisclem.
            Oui en effet c'etait tout bete j'avais mis mon srand dans la boucle chez moi....
            • Partager sur Facebook
            • Partager sur Twitter

            Du bon pseudo-aléatoire?

            × 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