Salut tous le monde,

j'essaie de remplir un tableau de float par des réels aléatoires, j'ai donc utilisé la fonction rand() après avoir initialiser srand() pour ne pas génerer la meme suite de nombres après chaque execution. Sachant que la fonction rand() renvoie un entier et non pas un réel, j'ai utilisé le petit bout de code suivant pour avoir des réels disant pseudo-aléatoires car un aléatoire n'existe pas vraiment en info.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
for(i=0;i<n;i++) T[i]=rand()+(float)rand()/RAND_MAX;
quand j'affiche mon tableau sous windows:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
for(i=0;i<n;i++) printf("%f\n",T[i]);
tout à l'air de marcher:
pour n=4 par exemple, ca donne:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
23890.898438
30356.031250
8303.141602
26744.281250
mais sous linux c vraiment different malgrais la portabilité du code utilisé:

avec n=4 ca donne:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
13855.000000
2318709.000000
64865.000000
7432076.000000
ca m'affiche uniquement des entiers; pas de chiffres après la virgules comme vous voyez, alors que si j'utilise uniquement le script:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
for(i=0;i<n;i++) T[i]=(float)rand()/RAND_MAX;
ca me génerent des réels alétoires entre 0 et 1, car rand() renvoie un entier entre 0 et la constante RAND_MAX, donc en utilisant rand()/RAND_MAX avec un cast (float) on est toujours sur que le nombre généré est compris entre 0 t 1.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
000000.898438
000000.031250
000000.141602
000000.281250