Parcours
/
Go
Go
/
Exercices
/
Magie animale
Magie animale

Magie animale

Exercice d'apprentissage

Introduction

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]
})

Graines

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())

Instructions

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.

1. Lance un dé

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

2. Génère l'énergie de la baguette

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

3. Mélange une tranche

Le jeu met en scène huit animaux différents :

  • ant
  • beaver
  • cat
  • dog
  • elephant
  • fox
  • giraffe
  • hedgehog

Écris une fonction ShuffleAnimals qui renvoie une tranche avec les huit animaux dans un ordre aléatoire.

Modifie via GitHub Le lien s'ouvre dans une nouvelle fenêtre ou un nouvel onglet
Go Exercism

Prêt à commencer Magie animale ?

Inscris-toi sur Exercism pour apprendre et maîtriser Go avec 34 concepts165 exercices, et un vrai mentorat humain, le tout gratuitement.