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

Résolu
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. 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. 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. 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
    1. 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
      1. faut faire un srand() avant de faire un rand sinon il va toujours tirer le même chiffre
        0
        1. merci beaucoup à vous tous! j'ai résolu le problème!!! trop contente
          0