Comprendre les nombres aléatoires cohérents dans les itérations
Dans l'extrait de code fourni, on observe que les nombres aléatoires générés dans une itération de boucle restent cohérents. Plus précisément, les variables 'carSetter' et 'decider' conservent les mêmes valeurs tout au long de 15 itérations malgré la boucle visant à générer des valeurs uniques.
Ce comportement est dû au placement de srand(time(0)) dans la boucle . Il détermine la séquence de nombres pseudo-aléatoires renvoyés lors des appels ultérieurs à rand(). Le problème réside dans le fait que time(0) renvoie généralement la même valeur lors de l'exécution de la boucle, ce qui conduit à la génération d'une série cohérente de nombres aléatoires.
Pour remédier à ce problème et garantir un véritable caractère aléatoire, il est crucial de déplacer l’appel initial vers srand(time(0)) en dehors de la boucle. Ce faisant, vous initialisez le générateur de nombres aléatoires une seule fois, garantissant ainsi que la séquence de nombres aléatoires varie considérablement au fil des itérations. Le code suivant illustre ce correctif :
srand(time(0)); // Called once at the program's start for (int i = 0; i < 15; i++) { carSetter = rand() % 3 + 1; decider = rand() % 2 + 1; // ... Rest of the code within the loop }
Cette modification permet à la boucle de générer des nombres aléatoires distincts à chaque itération comme prévu. Notez qu'il n'est pas nécessaire d'appeler srand() dans la boucle car le générateur de nombres pseudo-aléatoires continuera à produire des valeurs uniques jusqu'à ce que vous le réinitialisiez explicitement avec un autre appel à srand().
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!