Maison >développement back-end >Golang >Pourquoi le « rand.Intn » de Go génère-t-il parfois la même valeur ?

Pourquoi le « rand.Intn » de Go génère-t-il parfois la même valeur ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-16 08:20:16305parcourir

Why Does Go's `rand.Intn` Sometimes Generate the Same Value?

Dépannage de rand.Intn générant la même valeur

L'exemple Go fourni dans le lien renvoie en effet la même valeur pour rand.Intn(10) sauf modification pour initialiser le générateur de nombres aléatoires. Voici une explication :

  1. Source de nombres aléatoires non initialisés :

    • rand.Intn et d'autres fonctions du package rand utilisent la source globale pour générer des nombres aléatoires.
    • Par défaut, cette Source n'est pas initialisée, conduisant à un résultat déterministe séquence.
    • Pour initialiser la source, utilisez rand.Seed(time.Now().UnixNano()).
  2. Go Playground Caching :

    • Le Go Playground, où l'exemple est exécuté, met souvent en cache les résultats pour les améliorer performances.
    • Cette mise en cache peut affecter le résultat de la génération de nombres aléatoires, la rendant déterministe.

Pour résoudre ces problèmes et obtenir des nombres aléatoires de manière cohérente, pensez les étapes suivantes :

  1. Initialisez le générateur de nombres aléatoires en utilisant rand.Seed(time.Now().UnixNano()).
  2. Si vous exécutez l'exemple sur Go Playground, effacez la sortie avant de l'exécuter pour éviter la mise en cache.

En suivant En suivant ces étapes, vous pouvez générer efficacement des nombres aléatoires en utilisant rand.Intn et éviter de recevoir la même valeur à plusieurs reprises.

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