J'ai un probleme avec rand

sanae19 Messages postés 7 Date d'inscription samedi 16 décembre 2006 Statut Membre Dernière intervention 10 juin 2007 - 23 mai 2007 à 14:41
thomwebster Messages postés 63 Date d'inscription mercredi 7 février 2007 Statut Membre Dernière intervention 14 juin 2007 - 24 mai 2007 à 20:46
bonjour

en fait je fai un projet ou j'ai besoin de nombre aléatoire entre 0 et NMAX

je fait:

j=my_rand(NMAX);

printf(" %f", j);


la fonction my_rand:


int my_rand(int N)

{ return (rand() % (N+1));}


et ça m'affiche

1r=0

merci de m'expliker ke dois-je faire pooour recupérer tout simplement un nombre
A voir également:

7 réponses

THEwarrior333 Messages postés 192 Date d'inscription vendredi 19 mars 2004 Statut Membre Dernière intervention 30 janvier 2008
23 mai 2007 à 15:12
srand(time(NULL));  // A faire une fois au debut du programme


int my_rand(int N)

{


   return (int) (rand() * N / RAND_MAX );

}

et puisque ta fonction my_rand retourne un int:

j = my_rand(NMAX);

printf("%d", j);
0
sanae19 Messages postés 7 Date d'inscription samedi 16 décembre 2006 Statut Membre Dernière intervention 10 juin 2007
23 mai 2007 à 16:53
ok merci je vais essayer j'espere que ça marchera
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
24 mai 2007 à 05:00
Salut,

%f c'est pour les float, %u pour un unsigned, %d pour un signed, %c pour un caractere...

Une recherche sur exalead vous aurait peut-etre evit
0
sanae19 Messages postés 7 Date d'inscription samedi 16 décembre 2006 Statut Membre Dernière intervention 10 juin 2007
24 mai 2007 à 11:58
en fait j'ai fai les changements que THEWrrior333 m'as dit et c toujours la meme chose.

ça m'affiche 0r=0.

vous d'autre propositions s'il vous plait.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
thomwebster Messages postés 63 Date d'inscription mercredi 7 février 2007 Statut Membre Dernière intervention 14 juin 2007
24 mai 2007 à 14:52
En toute amitié rtfm ;) :
man srand:

/*
La fonction rand() renvoie un entier pseudo-aléatoire
entre 0 et RAND_MAX.

La fonction srand() utilise son argument comme "graine"
pour la génération d'une nouvelle séquence de nombres
pseudo-aléatoires, qui seront fournis par rand(). Ces
séquences sont reproductibles en appelant srand() avec la
même valeur de graine.

Si aucune graine originale n'est fournie, la fonction
rand() commence en utilisant la valeur 1.

*/
donc d'après le man t'a fonction doit etre:
int my_rand(int NMAX)
{
return (1+(int) (NMAX*rand()/(RAND_MAX+1.0)));

}
0
sanae19 Messages postés 7 Date d'inscription samedi 16 décembre 2006 Statut Membre Dernière intervention 10 juin 2007
24 mai 2007 à 19:27
merci pour vos reponse j'ai essayé tout ce que vous m'avez conseillé
mais ça marche toujours pas je sais vraiment pas pourquoi je vais
continuer les recherche.

bon courage a tout le monde
0
thomwebster Messages postés 63 Date d'inscription mercredi 7 février 2007 Statut Membre Dernière intervention 14 juin 2007
24 mai 2007 à 20:46
 il ne faut pas oublier dans ta fonction
 srand(time(0));
j'ai oublié de le préciser
0
Rejoignez-nous