Maison > développement back-end > C++ > le corps du texte

Pourquoi mes nombres aléatoires sont-ils cohérents dans une boucle ?

Linda Hamilton
Libérer: 2024-11-04 15:03:19
original
360 Les gens l'ont consulté

Why are my random numbers consistent within a loop?

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
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!