Mon programme contient du code qui devrait générer un nombre entier positif aléatoire chaque fois que je l'exécute. Il génère des nombres aléatoires mais seulement une fois. Après cela, quand j'exécute le même code, cela me donne les mêmes valeurs, et cela rend mon code inutile.Comment utiliser la fonction srand() avec time.h?
J'ai commencé avec la fonction rand , puis je l'srand() fonction avec le fichier d'en-tête time.h, mais il ne fonctionne pas correctement.
#define size 10
for(i=0;i<size;i++)
Arr[i] = rand()%size;
premier appel (au hasard):
6 0 2 0 6 7 5 5 8 6
Deuxième appel (au hasard, mais même que précédemment):
6 0 2 0 6 7 5 5 8 6
Plus tard je me suis rendu des questions Stack Overflow et j'ai lu la fonction srand(), et je l'ai utilisé comme:
#include<time.h>
for(i=0;i<size;i++)
Arr[i] = srand(time(NULL));
Premier appel:
-10327 -10327 -10327 -10327 -10327 -10327 -10327 -10327 -10327 -10327
Deuxième appel:
-10326 -10326 -10326 -10326 -10326 -10326 -10326 -10326 -10326 -10326
Il me donne différents (mais pas des valeurs aléatoires). J'ai défini Arr [i] comme non signé int, et je reçois toujours des valeurs négatives.
Avez-vous mis votre semence? Réglez votre graine avec la fonction de temps. – Magn3s1um
Vous n'avez besoin d'appeler 'srand' qu'une fois pour amorcer le générateur' rand'. Ne pas appeler 'srand' à chaque fois pour obtenir vos numéros – TJD
Vous devriez probablement lire la [page de manuel] (http://linux.die.net/man/3/rand), qui explique comment ces fonctions fonctionnent, et fournit un exemple de travail. – Aya