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

Fermé
Chmielnicki - 8 juin 2004 à 21:22
blurk Messages postés 486 Date d'inscription vendredi 16 avril 2004 Statut Membre Dernière intervention 15 mars 2009 - 9 juin 2004 à 20:12
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

blurk Messages postés 486 Date d'inscription vendredi 16 avril 2004 Statut Membre Dernière intervention 15 mars 2009 160
9 juin 2004 à 08:54
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
Salut,

rand(...)

est portable

random(...) semble est juste Windows
0
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
blurk Messages postés 486 Date d'inscription vendredi 16 avril 2004 Statut Membre Dernière intervention 15 mars 2009 160
9 juin 2004 à 20:12
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