Maison > développement back-end > Golang > Pourquoi `rand.Intn()` dans Go génère-t-il le même numéro à chaque fois ?

Pourquoi `rand.Intn()` dans Go génère-t-il le même numéro à chaque fois ?

Susan Sarandon
Libérer: 2024-10-30 13:25:02
original
631 Les gens l'ont consulté

Why Does `rand.Intn()` in Go Generate the Same Number Every Time?

Comprendre la génération de nombres aléatoires identiques dans Go's rand.Intn()

Pourquoi rand.Intn() génère-t-il systématiquement le même nombre aléatoire ? Cette question se pose souvent pour les débutants utilisant Go en raison du code suivant :

<code class="go">package main

import (
    "fmt"
    "math/rand"
)

func main() {
    fmt.Println(rand.Intn(10)) 
}</code>
Copier après la connexion

Malgré la documentation prétendant fournir un nombre pseudo-aléatoire dans la plage [0, n), le programme imprime le même nombre tous les temps.

Amorçage de la génération de nombres aléatoires

La clé réside dans l'amorçage correct du générateur de nombres aléatoires. Le comportement par défaut consiste à utiliser une graine déterministe, ce qui entraîne la même séquence de nombres lors des exécutions du programme. Pour remédier à cela :

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

Cette fonction initialise le générateur de nombres aléatoires avec une graine basée sur l'horodatage Unix actuel. Il garantit une séquence de nombres différente pour chaque exécution.

Comprendre la documentation

La documentation de rand.Intn() indique : "Fonctions de niveau supérieur... produire une séquence déterministe de valeurs à chaque fois qu'un programme est exécuté. Par conséquent, sans amorçage explicite, le générateur agit comme s'il était amorcé par 1, conduisant à des résultats prévisibles.

Conclusion

En ensemençant le générateur de nombres aléatoires avant d'utiliser rand.Intn (), vous pouvez surmonter le problème de la répétition des nombres aléatoires, en garantissant une génération appropriée de séquences non déterministes.

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