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 une seule fois. Après cela, lorsque j'exécute le même code, cela me donne les mêmes valeurs, et cela rend mon code inutile.
J'ai commencé avec la fonction Rand, puis j'ai utilisé la fonction srand () avec le fichier d'en-tête time.h, mais ce n'est toujours pas le cas fonctionner correctement.
#define size 10
for(i=0;i<size;i++)
Arr[i] = Rand()%size;
Premier appel (aléatoire):
6 0 2 0 6 7 5 5 8 6
Deuxième appel (aléatoire mais identique au précédent):
6 0 2 0 6 7 5 5 8 6
Plus tard, j'ai visité les questions sur Stack Overflow et j'ai lu sur la fonction srand (), et je l'ai utilisée 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
Cela me donne des valeurs différentes (mais pas aléatoires). J'ai défini Arr [i] comme entier non signé, et je reçois toujours des valeurs négatives.
Vous devez appeler srand()
ne fois, pour randomiser la graine, puis appeler Rand()
dans votre boucle:
#include <stdlib.h>
#include <time.h>
#define size 10
srand(time(NULL)); // randomize seed
for(i=0;i<size;i++)
Arr[i] = Rand()%size;
Essayez d'appeler randomize () avant Rand () pour initialiser le générateur aléatoire.
(regardez: srand () - pourquoi ne l'appeler qu'une seule fois? )
Si vous avez choisi de srand
, c'est une bonne idée d'appeler ensuite Rand()
au moins une fois avant de l'utiliser, car c'est une sorte d'horrible générateur primitif aléatoire aléatoire. Voir la question Stack Overflow Pourquoi Rand ()% 7 renvoie-t-il toujours 0?.
srand(time(NULL));
Rand();
//Now use Rand()
Si disponible, random
ou arc4Rand
serait mieux.