Stdlib.h nombre aléatoire. Diff Linux Win?

Chmielnicki -  
blurk Messages postés 493 Date d'inscription   Statut Membre -
Bonjour a tous,

Je suis un exemplaire parfait de neuneu de l'informatique, en train d'apprende le langage C. Il y a dans mon cours une exo ou on a besoin d'un générateur de nombre aléatoire (de 1 a 100 pour tout vous dire). Il était indiqué dans le cours qu'il fallait faire :

int variable;
randomize(); //puis
variable=random(100+1)


en utilisant <stdlib.h>

Or cd programme fonctionne sous Windows (avec Borland COmpiler 5.5, mais ne fonctionne pas sous Linux (avec GCC 3.3). ET je ne trouve pas dans les pages man de linux de fonction équivalente (ou des machins balèze avec des constantes et des pointeurs a la noix, bref du jargon)

Existe-t-il une fonction équivalente pour générer des nombres aléatoires compris entre deux valeurs données en C sous gcc3.3 sous Linux? Lesquelles? Merci pour tt réponse, et A+

PS: Il me semble de plus que stdlib ets une bib's de l'ansi-c standart (contraireent a dos ou conio). Alors la, je bloque :)))

4 réponses

  1. blurk Messages postés 493 Date d'inscription   Statut Membre 160
     
    sous windows, randomize est dans system.h
    je ne crois pas que cela soit pour unix/linux
    parcontre, dans stdlib.h, il y a rand:
    int rand(void);
    exemple rand()%10 retourne une valeur comprise entre 0 et9
    (modulo 10 donne le reste de la division par 10)
    rand(); permet d'initialiser le generateur de hasard.
    c'est la fonction la plus portable.

    cordialement
    1
  2. marvinrouge
     
    Salut,

    rand(...)

    est portable

    random(...) semble est juste Windows
    0
  3. Chmielnicki
     
    Merci bien pour vos réponses. Mon problème se complique malheureusement.
    random() ou rand() génère une série de nombre pseudo-aléatoire. Juste un problème : cette fonction génère toujours les même nombres. Quand je lance mon programme utilisant cette fonction, il me sort toujours 142 (dans un cas précis). SI je lui fait sortir une série de nombre, les nombres sont défférents, mais la série ne varie pas quand je relance le programme. Par exemple, admettons le programme alea :

    for(i==0; i<=3; i++){
    a = rand()%200;
    printf("%d-", a);
    }

    Il gén!re par exemple 1-123-34-198 a chaque fois que je le lance.

    Sous windows, la fonction randomize() initialisait la génération de nombres aléatoires, de facon a obtenir une série différence a chaque lancement du programme. Existe t il la encore une fonction équoivalente dans stdlib.h? ou sans une autre bib'

    Meci et A+
    0
  4. blurk Messages postés 493 Date d'inscription   Statut Membre 160
     
    ReSalut
    c'est effectivement un problème d'initialisation
    du générateur pseudo-aléatoire
    là dessous c'est un exemple fourni par borland
    qui devrait marcher partout

    #include <stdlib.h>
    #include <stdio.h>
    #include <time.h>
    
    int main(void)
    {
       int i;
       time_t t;
    
       srand((unsigned) time(&t));
       printf("Ten random numbers from 0 to 99\n\n");
       for(i=0; i<10; i++)
           printf("%d\n", rand() % 100);
       return 0;
    }
    


    A+
    0