Avatar ·

Comment initialiser correctement un générateur de nombres aléatoires en Go ?

Bonjour ! Je suis débutant en Go et j'essaie de comprendre la génération de nombres aléatoires. J'ai lu qu'il existe un package `math/rand` en Go, mais j'ai un problème : à chaque exécution du programme, j'obtiens la même séquence de nombres. Voici mon code : ```go package main import ( "fmt" "math/rand" ) func main() { for i := 0; i < 5; i++ { fmt.Println(rand.Intn(100)) } } ``` À chaque exécution, le résultat est toujours le même : `81, 87, 47, 59, 81`. Je m'attendais à ce que les nombres changent. J'ai entendu dire qu'il faut "seed" (initialiser) le générateur, mais je ne comprends pas comment le faire correctement. Quand j'essaie d'utiliser `rand.Seed(time.Now().UnixNano())`, je reçois un avertissement du linter indiquant que Seed est obsolète depuis Go 1.20. Comment initialiser correctement le générateur dans les versions modernes de Go ? Y a-t-il une différence entre `math/rand` et `crypto/rand` ? Quelle approche est considérée comme correcte pour les tâches courantes (non cryptographiques) ? Je vous serais reconnaissant pour une explication détaillée avec des exemples.