Maison >développement back-end >C++ >Pourquoi Random.Next produit-il des valeurs répétitives dans une boucle ?
Comprendre les problèmes de génération de nombres aléatoires dans les boucles
Problème:
Un problème commun survient lors de l'utilisation de Random.Next
dans des boucles pour générer des nombres aléatoires. Si vous créez un nouvel objet Random
à l'intérieur de la boucle pour chaque itération, vous observerez souvent des nombres "aléatoires" répétés ou prévisibles. Cela est particulièrement vrai dans les boucles de course rapide.
Explication:
La cause racine réside dans l'initialisation de l'objet Random
. Chaque instance Random
est ensemencée à l'aide de l'horloge du système. Si plusieurs instances sont créées dans un délai très court (comme cela se produit souvent en boucles), ils reçoivent la même valeur de graines. Cela conduit à chaque objet Random
produisant la séquence identique de nombres pseudo-aléatoires.
Résolution:
La solution est simple: créez un objet single Random
à l'extérieur de la boucle et réutilisez-le pour toutes les générations de nombres aléatoires dans la boucle. Cela garantit qu'une séquence cohérente, mais imprévisible, de nombres aléatoires est générée. Passez cette instance unique Random
au besoin à toutes les méthodes nécessitant des nombres aléatoires.
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!