Le package math/rand prend en charge la génération de nombres pseudo-aléatoires.
Voici comment générer un entier aléatoire entre 0 et 99 :
n := rand.Intn(100) // n is a random int, 0 <= n < 100
La fonction rand.Float64 renvoie un nombre à virgule flottante aléatoire entre 0.0 et 1.0 :
f := rand.Float64() // f is a random float64, 0.0 <= f < 1.0
Il est également possible de mélanger un slice (ou d'autres structures de données) :
x := []string{"a", "b", "c", "d", "e"}
// shuffling the slice put its elements into a random order
rand.Shuffle(len(x), func(i, j int) {
x[i], x[j] = x[j], x[i]
})
Les séquences de nombres générées par le package math/rand ne sont pas vraiment aléatoires.
Pour une valeur de « graine » donnée, les résultats sont entièrement déterministes.
Dans Go 1.20 et versions ultérieures, la graine est choisie automatiquement au hasard, si bien que tu verras une séquence de nombres aléatoires différente à chaque exécution de ton programme.
Dans les versions antérieures de Go, la graine était 1 par défaut.
Ainsi, pour obtenir des séquences différentes à chaque exécution du programme, tu devais initialiser manuellement le générateur de nombres aléatoires, par exemple avec l'heure actuelle, avant de récupérer des nombres aléatoires.
rand.Seed(time.Now().UnixNano())
Elaine travaille sur un nouveau jeu pour enfants qui met en scène des animaux et des baguettes magiques. Il est temps de coder des fonctions pour lancer un dé, générer de l'énergie de baguette aléatoire et mélanger une tranche.
Implémente une fonction RollADie.
Ce sera le dé traditionnel à vingt faces, numéroté de 1 à 20.
d := RollADie() // d will be assigned a random int, 1 <= d <= 20
Implémente une fonction GenerateWandEnergy.
L'énergie de la baguette doit être un nombre à virgule flottante aléatoire supérieur ou égal à 0,0 et inférieur à 12,0.
f := GenerateWandEnergy() // f will be assigned a random float64, 0.0 <= f < 12.0
Le jeu met en scène huit animaux différents :
Écris une fonction ShuffleAnimals qui renvoie une tranche avec les huit animaux dans un ordre aléatoire.
Inscris-toi sur Exercism pour apprendre et maîtriser Go avec 34 concepts165 exercices, et un vrai mentorat humain, le tout gratuitement.