A l'aide!!! réel aléatoire en C

Résolu/Fermé
lilitiatia - 23 juin 2008 à 15:40
 lilitiatia - 23 juin 2008 à 16:30
Bonjour,
j'ai un programme de 1 ère année à faire en C et je trouve pas le moyen de générer un réel aléatoire entre 0 (NON COMPRIS!!!!) et un réel quelconque. Merci beaucoup!

5 réponses

reltak Messages postés 260 Date d'inscription mercredi 22 août 2007 Statut Membre Dernière intervention 14 janvier 2012 40
23 juin 2008 à 15:44
Salut

En C, il me semble que la fonctionr rand() sort un nombre aléatoire mais une ligne est nécessaire au tout début de ton programme pour initialiser le compteur aléatoire:

[code]
srand(time(null));
[/code]

Une fois ceci fait tu peux appeler ta fonction rand() qui génère un nombre aléatoire entre 0 et 1.
Il te suffit de multiplier le nombre sorti par rand() pour gérer les limites.

Reltak.
0
oui c'est vrai mais le problème c'est que rand() peut renvoyer 0. Or je veux que 0 ne soit pas compris.
0
mich62120 Messages postés 631 Date d'inscription jeudi 22 novembre 2007 Statut Membre Dernière intervention 21 janvier 2010 6
23 juin 2008 à 15:51
Salut,

Tu pourras trouver plus de details sur le site suivant , apparement il donne plusieurs exemple dont le tien:

http://www.games-creators.org/wiki/Les_nombres_al%C3%A9atoires:_la_fonction_rand()_en_C



Pour obtenir des nombres réels inclus entre a et b non compris :
double r;
r = a + ((double) rand() * (b - a) / (RAND_MAX+1));
Pour obtenir plus de précisions il est conseillé de faire
r = a + ((double) rand() / (RAND_MAX + 1)) * ((double) rand() / (RAND_MAX + 1)) * (b - a)ou
r = a + ((double) (rand() + rand() << 16) / ((double) (RAND_MAX + 1) * (RAND_MAX + 1))) * (b - a);

ne pas oublier ce que Reltak a dit

Mich
0
merci Mich

mais en appliquant
double r;
r = a + ((double) rand() * (b - a) / (RAND_MAX+1));
avec a = 0.1 ou peu importe, r peut toujours valoir 0. Je ne comprends toujours pourquoi et je ne trouve pas la solution.
0
kazouu Messages postés 466 Date d'inscription mercredi 4 juin 2008 Statut Membre Dernière intervention 24 juillet 2008 12
23 juin 2008 à 16:20
faut faire un srand() avant de faire un rand sinon il va toujours tirer le même chiffre
0

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

Posez votre question
merci beaucoup à vous tous! j'ai résolu le problème!!! trop contente
0