Rutas
/
Go
Go
/
Ejercicios
/
Magia animal
Magia animal

Magia animal

Ejercicio de aprendizaje

Introducción

El paquete math/rand permite generar números pseudoaleatorios.

Así se genera un número entero aleatorio entre 0 y 99:

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

La función rand.Float64 devuelve un número de coma flotante aleatorio entre 0.0 y 1.0:

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

También se pueden barajar slices (u otras estructuras de datos):

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

Semillas

Las secuencias de números que genera el paquete math/rand no son verdaderamente aleatorias. Dado un valor de «semilla» concreto, los resultados son totalmente deterministas.

En Go 1.20 y posteriores, la semilla se elige automáticamente al azar, así que verás una secuencia de números aleatorios distinta cada vez que ejecutes tu programa.

En versiones anteriores de Go, la semilla era 1 por defecto. Así que, para obtener secuencias distintas en cada ejecución del programa, tenías que inicializar manualmente el generador de números aleatorios, por ejemplo con la hora actual, antes de obtener ningún número aleatorio.

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

Instrucciones

Elaine está trabajando en un nuevo juego para niños que incluye animales y varitas mágicas. Es hora de programar funciones para tirar un dado, generar energía de la varita aleatoria y mezclar un slice.

1. Tirar un dado

Implementa una función RollADie.

Será el típico dado de veinte caras con números del 1 al 20.

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

2. Generar energía de la varita

Implementa una función GenerateWandEnergy. La energía de la varita debe ser un número de coma flotante aleatorio mayor o igual que 0.0 y menor que 12.0.

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

3. Mezclar un slice

El juego incluye ocho animales diferentes:

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

Escribe una función ShuffleAnimals que devuelva un slice con los ocho animales en orden aleatorio.

Editar en GitHub El enlace se abre en una ventana o pestaña nueva
Go Exercism

¿Listo para empezar Magia animal?

Regístrate en Exercism para aprender y dominar Go con 34 conceptos165 ejercicios y mentoría humana real, todo gratis.