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!
Configuration: Windows XP
Firefox 3.0

5 réponses

  1. reltak Messages postés 262 Statut Membre 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
    1. 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
  2. mich62120 Messages postés 636 Statut Membre 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
  3. 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
  4. kazouu Messages postés 466 Statut Membre 12
     
    faut faire un srand() avant de faire un rand sinon il va toujours tirer le même chiffre
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

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