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.