Maison > développement back-end > C++ > Pourquoi mon générateur de nombres aléatoires produit-il des valeurs identiques et comment puis-je le réparer?

Pourquoi mon générateur de nombres aléatoires produit-il des valeurs identiques et comment puis-je le réparer?

Patricia Arquette
Libérer: 2025-02-03 08:36:10
original
680 Les gens l'ont consulté

Why Does My Random Number Generator Produce Identical Values, and How Can I Fix It?

Dépannage et fixation des nombres aléatoires répétés

La fonction RandomNumber, destinée à générer des entiers aléatoires dans une plage donnée, produit des valeurs identiques lorsque plusieurs instances Random sont créées dans une boucle. Cela se produit parce que chaque instance Random s'instalalise en utilisant l'heure actuelle. En boucles rapides, le temps reste pratiquement inchangé, conduisant à une génération de nombres aléatoires répétés.

La solution consiste à utiliser une instance unique, partagée Random pour toute génération de nombres. Cela empêche plusieurs threads de modifier simultanément l'état interne du générateur. La sécurité des fils est cruciale ici.

Voici le code amélioré:

<code class="language-csharp">private static readonly Random random = new Random(); // Single instance

public static int RandomNumber(int min, int max)
{
    lock (random) // Thread-safe access
    {
        return random.Next(min, max);
    }
}</code>
Copier après la connexion

En utilisant une instruction lock pour synchroniser l'accès à l'instance unique random, nous nous assurons que chaque thread obtient un nombre aléatoire unique. Cette méthode est à la fois efficace et fileuse, garantissant l'aléatoire souhaité.

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