Maison >développement back-end >C++ >Pourquoi mon générateur de nombres aléatoires ne produit-il qu'un seul numéro, et comment puis-je le réparer?
Le générateur de nombres aléatoires ne génère qu'un seul problème de nombre aléatoire et une solution
Cet article traite d'une fonction de générateur de nombres aléatoires
Un seul nombre aléatoire est généré. La cause profonde du problème est que la fonction crée une nouvelle instance à chaque appel. Étant donné que l'état interne de l'instance est basé sur l'initialisation de l'horloge du système, dans un cycle de clôture, plusieurs appels obtiendront la même valeur. RandomNumber
Random
Afin de résoudre ce problème et d'assurer la précision des nombres aléatoires, une instance Random
doit être créée et réutilisée. Le code suivant montre comment réaliser:
Random
En utilisant l'instruction , nous synchronisons les visites des instances
<code class="language-csharp">private static readonly Random random = new Random(); private static readonly object syncLock = new object(); public static int RandomNumber(int min, int max) { lock (syncLock) { return random.Next(min, max); } }</code>générera un nombre aléatoire unique dans la même ligne.
lock
Une autre méthode consiste à utiliser des variables Random
pour maintenir une instance RandomNumber
pour chaque thread pour éviter la synchronisation:
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!