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

Pourquoi l'appel de « rand.Intn » sans amorçage entraîne-t-il la même séquence de nombres en Go ?

Susan Sarandon
Libérer: 2024-10-29 04:57:02
original
978 Les gens l'ont consulté

Why Does Calling `rand.Intn` Without Seeding Result in the Same Sequence of Numbers in Go?

Génération déterministe de nombres aléatoires dans Go

Dans Go, appeler rand.Intn(n int) int sans amorcer le générateur de nombres aléatoires sera toujours renvoie la même séquence de nombres. En effet, la source par défaut utilisée pour la génération de nombres aléatoires est initialisée avec une valeur de départ fixe, ce qui la rend effectivement déterministe.

Pourquoi cela se produit-il ?

Comme mentionné dans le documentation officielle, la fonction rand.Intn renvoie un nombre pseudo-aléatoire, qui est généré à l'aide d'un algorithme déterministe et d'une valeur de départ. Si la valeur de départ n'est pas spécifiée, la valeur de départ par défaut de 1 est utilisée, conduisant à la génération de la même série de nombres à chaque exécution.

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

Pour générer des nombres véritablement aléatoires, il est crucial d'amorcer le générateur de nombres aléatoires avec une graine différente pour chaque exécution. Ceci peut être réalisé en appelant la fonction rand.Seed() et en lui transmettant une valeur de départ aléatoire. Une pratique courante consiste à utiliser l'horodatage Unix actuel comme graine, ce qui garantit que le générateur est initialisé avec une valeur unique pour chaque exécution.

Exemple :

<code class="go">import (
    "fmt"
    "math/rand"
    "time"
)

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

Conclusion

En amorceant correctement le générateur de nombres aléatoires, vous pouvez vous assurer que vos programmes Go génèrent des nombres véritablement aléatoires, les rendant imprévisibles et plus représentatifs du véritable hasard.

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!