Maison > développement back-end > Golang > le corps du texte

## Pourquoi mon code Go génère-t-il le même nombre aléatoire à chaque fois ?

Patricia Arquette
Libérer: 2024-10-26 05:01:30
original
549 Les gens l'ont consulté

## Why Does My Go Code Generate the Same Random Number Every Time?

Comprendre la génération de nombres aléatoires dans Go

Dans Go, la fonction rand.Intn(n int) int génère un pseudo- non négatif nombre aléatoire dans la plage [0, n) à partir d’une source partagée par défaut. Cependant, les utilisateurs peuvent rencontrer des situations dans lesquelles cette fonction semble générer le même nombre aléatoire à chaque exécution. Cela peut se produire si la source par défaut n'est pas correctement amorcée.

Comportement et amorçage par défaut

La documentation du package rand indique que si rand.Seed() n'est pas explicitement appelée, la source par défaut est prédéfinie avec la valeur 1. Cela signifie que le générateur de nombres aléatoires se comporte de manière déterministe et produit la même séquence de valeurs pour chaque exécution.

Amorçage approprié pour un véritable caractère aléatoire

Pour garantir un véritable caractère aléatoire, il est recommandé d'appeler rand.Seed() avec une valeur de départ aléatoire. Une approche courante consiste à utiliser l'horodatage Unix actuel, comme le montre l'exemple suivant :

<code class="go">rand.Seed(time.Now().UnixNano())</code>
Copier après la connexion

En appelant rand.Seed() avec une valeur en constante évolution, telle que l'horodatage Unix, la source par défaut est initialisé à un état déterministe différent pour chaque exécution. Cela aboutit à la génération de nombres véritablement aléatoires.

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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!