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

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

Susan Sarandon
Susan Sarandonoriginal
2024-10-29 04:57:021114parcourir

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>

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!

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