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>
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!