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?

Pourquoi mon générateur de nombres aléatoires ne produit-il qu'un seul numéro, et comment puis-je le réparer?

Linda Hamilton
Linda Hamiltonoriginal
2025-02-03 08:21:08607parcourir

Why Does My Random Number Generator Only Produce One Number, and How Can I Fix It?

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

pour nous assurer que chaque fois
<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!

Déclaration:
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