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
Libérer: 2025-02-03 08:21:08
original
654 Les gens l'ont consulté

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