Percursos
/
Go
Go
/
Exercícios
/
Magia animal
Magia animal

Magia animal

Exercício de aprendizagem

Introdução

O pacote math/rand fornece suporte para gerar números pseudoaleatórios.

Vê como gerar um número inteiro aleatório entre 0 e 99:

n := rand.Intn(100) // n is a random int, 0 <= n < 100

A função rand.Float64 devolve um número de vírgula flutuante aleatório entre 0.0 e 1.0:

f := rand.Float64() // f is a random float64, 0.0 <= f < 1.0

Há também suporte para baralhar um slice (ou outras estruturas de dados):

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

Sementes

As sequências de números geradas pelo pacote math/rand não são verdadeiramente aleatórias. Dado um valor de "semente" específico, os resultados são totalmente determinísticos.

No Go 1.20+, a semente é escolhida automaticamente ao acaso, por isso vais ver uma sequência diferente de números aleatórios sempre que correres o teu programa.

Nas versões anteriores do Go, a semente era 1 por predefinição. Por isso, para obteres sequências diferentes em várias execuções do programa, tinhas de definir manualmente a semente do gerador de números aleatórios, por exemplo, com a hora atual, antes de obteres quaisquer números aleatórios.

rand.Seed(time.Now().UnixNano())

Instruções

A Elaine está a trabalhar num novo jogo infantil que tem animais e varinhas mágicas. Está na altura de programar funções para lançar um dado, gerar energia aleatória para as varinhas e baralhar um slice.

1. Lançar um dado

Implementa uma função RollADie.

Será o tradicional dado de vinte faces, com os números de 1 a 20.

d := RollADie() // d will be assigned a random int, 1 <= d <= 20

2. Gerar energia para as varinhas

Implementa uma função GenerateWandEnergy. A energia da varinha deve ser um número de vírgula flutuante aleatório igual ou superior a 0.0 e inferior a 12.0.

f := GenerateWandEnergy()  // f will be assigned a random float64, 0.0 <= f < 12.0

3. Baralhar um slice

O jogo tem oito animais diferentes:

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

Escreve uma função ShuffleAnimals que devolve um slice com os oito animais por ordem aleatória.

Editar via GitHub A ligação abre numa nova janela ou separador
Go Exercism

Estás pronto para começar Magia animal?

Inscreve-te no Exercism para aprenderes e dominares Go com 34 conceitos165 exercícios, e mentoria humana real, tudo grátis.