Problème nombre aléatoire c

titi.007 Messages postés 5 Date d'inscription   Statut Membre Dernière intervention   -  
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   -
salut, ce code ne compile pas !! aide moi svp
void main()
{
long int n;
srand(time(NULL));
 do
 {
     n= rand() % (1000000);
 }while(n<100000);
pirntf("%d",n);
}

2 réponses

seo610 Messages postés 596 Date d'inscription   Statut Membre Dernière intervention   102
 
Il te faut inclure stdio.h et ton printf est mal écrit.
Sinon, ton code ne fait pas grand chose d'intéressant, car n ne va jamais être plus grand que 100 000.
rand() ne renvoit que des valeurs entre 0 et 32768 et le modulo que tu fais ne va rien changer à ce résultat.

Buy a ward, stop a gank, save a life.
Wards.
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
stdio.h n'est pas suffisant

rand() ne renvoit que des valeurs entre 0 et 32768
32767 plutôt. Et rand() peut retourner une valeur supérieure à cette limite. Ca dépend de la machine.
0
seo610 Messages postés 596 Date d'inscription   Statut Membre Dernière intervention   102
 
Merci pour la précision, c'est vrai, j'ai copié le mauvais nombre. Je me suis basé sur The C Programming Language ANSI C Version. Avec mingw, stdio.h est suffisant.
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
mingw n'est pas un compilateur. J'imagine que tu veux parler de gcc. Cela dépend des flags que tu as mis.
En tout cas, il faut mettre stdio.h pour printf(), stdlib.h pour srand()/rand() et time.h pour time().
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Bonjour,

Il faut inclure stdio.h, stdlib.h et time.h

Ce n'est pas voir main() mais int main(voir)
Et il ne faut pas oublier : return 0; en fin.

Ce n'est pas pirntf mais printf. Il ne faut pas oublier de mettre un saut de ligne (\n) en fin de ligne. Ou alors faire un flush.
=> printf("%d\n",n);

Et ton rand() retourne une valeur entre 0 et RAND_MAX. Combien vaut-il ? Il y a un vrai risque de faire une boucle infinie. Peut-être que tu devrais revoir cette condition.

Cdlt,
0