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

Résolu
lilitiatia -  
 lilitiatia -
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 261 Date d'inscription   Statut Membre Dernière intervention   41
 
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
lilitiatia
 
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   Statut Membre Dernière intervention   6
 
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
lilitiatia
 
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   Statut Membre Dernière intervention   12
 
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
lilitiatia
 
merci beaucoup à vous tous! j'ai résolu le problème!!! trop contente
0