Maison >développement back-end >Golang >Comment générer des nombres vraiment aléatoires avec le package Go's Rand ?
Question :
Le package rand dans Go fournit le Fonction Int31n pour générer des nombres pseudo-aléatoires, mais elle semble donner le même résultat lors d'une exécution répétée. Existe-t-il un moyen d'obtenir des résultats vraiment aléatoires à chaque fois que la fonction est appelée ?
Réponse :
Le package Rand utilise un générateur de nombres pseudo-aléatoires déterministe (PRNG). Chaque fois que le programme est exécuté, le PRNG génère la même séquence de nombres basée sur une valeur initiale fixe connue sous le nom de « graine ».
Pour générer des nombres aléatoires différents à chaque exécution, il est essentiel d'initialiser le générateur avec un graine unique. Une approche courante consiste à utiliser l’heure actuelle en nanosecondes, qui change à chaque fois que le programme est exécuté. Cela peut être fait en utilisant le code suivant :
<code class="go">import "time" func main() { rand.Seed(time.Now().UnixNano()) fmt.Println(rand.Int31n(100)) }</code>
Alternativement, le package crypto/rand fournit une source aléatoire plus sécurisée. Il collecte l'entropie de diverses sources du système, telles que les mouvements de la souris, la température du processeur et les saisies au clavier. Cependant, ses performances peuvent être plus lentes par rapport au package rand.
En définissant une graine unique ou en utilisant le package crypto/rand, vous pouvez vous assurer que la fonction rand.Int31n génère des nombres véritablement aléatoires à chaque fois qu'elle est appelé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!