Comportement de la fonction srand() dans une fonction
En travaillant avec la fonction rand() en C , un peut rencontrer un problème où appeler la fonction plusieurs fois dans la même fonction donne systématiquement la même valeur. Pour résoudre ce problème, il est essentiel de comprendre le comportement de la fonction srand().
Qu'est-ce que srand() et pourquoi est-ce important ?
La fonction srand() initialise le générateur de nombres aléatoires. Lors de l'appel répété de la fonction rand() sans la réinitialiser avec srand(), elle continue de produire des nombres suivants à partir de la même graine, ce qui entraîne des résultats prévisibles.
Solution pour corriger le caractère aléatoire
Pour garantir un véritable caractère aléatoire, le La fonction srand() ne doit être appelée qu'une seule fois au début du programme, plutôt que dans une fonction spécifique. Ce faisant, la graine n'est définie qu'une seule fois, permettant à la fonction rand() de générer une séquence véritablement aléatoire lors d'appels ultérieurs.
Application de la solution
Dans l'extrait de code fourni, le problème réside dans la fonction PullOne(). La fonction srand() est appelée avant chaque invocation de rand(), conduisant à une séquence prévisible et à des résultats répétés. Pour corriger cela, déplacez l'appel à srand() au début de la fonction principale :
int main() { std::srand(time(0)); string pull_1, pull_2, pull_3; pull_1 = PullOne(); pull_2 = PullOne(); pull_3 = PullOne(); return 0; }
En appliquant cette modification, la fonction rand() produira des valeurs distinctes pour pull_1, pull_2 et pull_3.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!