Maison  >  Article  >  développement back-end  >  Pourquoi mon code Go continue-t-il à générer le même nombre aléatoire ?

Pourquoi mon code Go continue-t-il à générer le même nombre aléatoire ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-26 12:43:29672parcourir

Why Does My Go Code Keep Generating the Same Random Number?

Résoudre la génération répétitive de nombres aléatoires dans Go

Dans Go, la fonction rand.Intn(n int) int renvoie un entier pseudo-aléatoire dans la plage [0, n). Cependant, vous avez rencontré un problème où il imprime le même nombre de manière cohérente.

La documentation suggère que rand.Intn utilise la source par défaut, qui génère une séquence déterministe de valeurs. Pour personnaliser le comportement et garantir le caractère aléatoire, vous devez correctement amorcer la génération de nombres aléatoires.

Pour amorcer le générateur de nombres aléatoires, appelez la fonction rand.Seed(seed int64). Cette fonction initialise la source par défaut avec une valeur de départ. Une pratique courante consiste à utiliser l'horodatage Unix actuel :

<code class="go">rand.Seed(time.Now().UnixNano())</code>

En amorceant le générateur, vous vous assurez que chaque exécution de votre programme produit des nombres aléatoires différents.

Si rand.Seed() n'est pas appelé, le générateur agit comme s'il était amorcé par 1, conduisant à la répétition observée.

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