"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Pourquoi mes nombres aléatoires sont-ils les mêmes dans les itérations de boucle ?

Pourquoi mes nombres aléatoires sont-ils les mêmes dans les itérations de boucle ?

Publié le 2024-11-12
Parcourir:642

Why are My Random Numbers the Same Within Loop Iterations?

Mêmes nombres aléatoires dans les itérations de boucle

Dans votre boucle qui s'exécute 15 fois, vous avez invoqué dh.setDoors() à chaque itération. Dans cette fonction, srand(time(0)) est appelé pour lancer la génération de nombres pseudo-aléatoires. Cependant, les appels ultérieurs à rand() dans la boucle entraînent des valeurs constantes de carSetter et de decider tout au long des 15 itérations.

Ce comportement se produit car srand(time(0)) définit la graine du générateur de nombres aléatoires en fonction à l'heure actuelle. Étant donné que la boucle s'exécute rapidement, time(0) renvoie la même valeur à chaque fois, ce qui donne la même séquence de nombres pseudo-aléatoires.

Pour surmonter ce problème, il est recommandé d'appeler uniquement srand(time(0 )) une fois au début du programme, généralement en suivant un processus tel que :

srand(time(0));

for (int i = 0; i 

En effectuant cette initialisation une seule fois, le générateur de nombres pseudo-aléatoires générera une séquence unique de nombres pour chaque itération de la boucle, produisant la variation attendue des valeurs de carSetter et de decider.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3