Maison  >  Article  >  développement back-end  >  ## Pourquoi mon code Go génère-t-il le même nombre aléatoire à chaque fois ?

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

Patricia Arquette
Patricia Arquetteoriginal
2024-10-26 05:01:30538parcourir

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

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!

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