"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Conseils pour générer de vrais nombres aléatoires dans le package de rand en langue go

Conseils pour générer de vrais nombres aléatoires dans le package de rand en langue go

Publié le 2025-04-14
Parcourir:345

How to Generate Truly Random Numbers with Go's Rand Package?

dépannage de la génération de nombres aléatoires pseudo dans le package rand

Question:

Le package RAND dans GO fournit la fonction int31n pour générer des nombres aléatoires pseudo, mais il semble donner la sortie dans la même sortie lors de l'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éterministes (PRNG). Chaque fois que le programme est exécuté, le PRNG génère la même séquence de nombres basés sur une valeur initiale fixe connue sous le nom de "graine".

pour générer différents nombres aléatoires à chaque exécution, il est essentiel d'initialiser le générateur avec une graine unique. Une approche commune consiste à utiliser l'heure actuelle dans les nanosecondes, qui change chaque fois que le programme est exécuté. Cela peut être fait en utilisant le code suivant:

import "time"

func main() {
    rand.Seed(time.Now().UnixNano())
    fmt.Println(rand.Int31n(100))
}

Alternativement, le package crypto / rand fournit une source plus sécurisée de hasard. Il rassemble l'entropie à partir de diverses sources de système, telles que les mouvements de la souris, la température du processeur et l'entrée du 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 vraiment aléatoires à chaque fois qu'il est appelé.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3