#1 Le 05/12/2007, à 20:46
- buchepot
comment gérer la fonction rand en c
Bonjour
Dans le cadre de notre école nous avons un projet à réaliser, pour moi il consiste à réaliser une bataille navale.
Pour le tester je le lance plusieur fois et grà¢ce à la fonction rand une grande quantité de configuration sont réalisé. Seulement pour retrouver plus facilement une érreur j'ai besoin de relancer le programme et que celui-ci s'exécute de la même manière(avec les mêmes valeurs fournis par la fonction rand)
N'y aurait-il pas une manière de connaitre la position ou l'on se trouve dans la liste des valeurs utilisées par la fonction rand. Grà¢ce à cette valeur, je relancerai mon programme en utilisant la fonction srand.
J'espère être compréhensible et merci d'avance pour vos réponse
Hors ligne
#2 Le 05/12/2007, à 21:05
- lut!n
Re : comment gérer la fonction rand en c
Pour initialiser le générateur de nombres aléatoires, tu peux utiliser srand(1) par exemple
Ceci garantira que chaque execution de ton programme utilisera les meme nombres
A noter que rand() se comporte par défault comme apres un appel a srand(1), ce qui fait que de toutes façons, a moins d'initialiser explicitement ton générateur de nombres aléatoires a srand(time(NULL)) par exemple, ton programme utilisera toujours les meme valeurs
a+
ps: il n'existe pas de 'liste" de nombres généré par rand(), puisque c'est un générateur pseudo-aléatoire. Il définit le nombre selon un algorithme (que je ne connais pas) utilisant la valeur donnée a srand() (1 par defaut)
Hors ligne
#3 Le 05/12/2007, à 22:08
- buchepot
Re : comment gérer la fonction rand en c
Le problème c'est lorsque je fais plusieurs partie à la suite sans fermer le programme et qu'il plante, je suis obligé, si je veux me retrouver dans les mêmes configurations de recommencer toutes les parties que j'avais réaliser.
Vu que pour une valeur donné à srand, lorsqu'on aura appelé x fois la fonction rand, elle donnera toujours la même valeur, n'y a t'il pas un moyen de connaitre ce nombre à un moment quelconque dans le programme pour pouvoir (à l'aide d'une boucle ou d'une éventuelle fonction) faire comme si j'avais lancé les différentes parties réalisé avant le problème.
Hors ligne
#4 Le 05/12/2007, à 22:22
- lut!n
Re : comment gérer la fonction rand en c
tu peux enregistrer les différents nombres obtenus / les différents coups du jeu dans un fichier, et le lire pour simuler les parties précédentes, mais aussi bien ça peut augmenter le risque d'introduire un bug . (mais bon, tu pourra connaitre la valeur renvoyée par rand() au Xème appel)
Hors ligne
#5 Le 05/12/2007, à 22:26
- buchepot
Re : comment gérer la fonction rand en c
Merci bien
J'espérais qu'il y avait une fonction pour ça, mais vu que ça n'a pas l'air, à chaque nouvelle partie je vais prendre une valeur aléatoire que je vais enregistrer, et je vais appliquer srand à cette valeur, je crois que ce sera plus simple.
Hors ligne