Tracks
/
Go
Go
/
Temario
/
Aleatoriedad
Al

Aleatoriedad en Go

2 ejercicios

Acerca de Aleatoriedad

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

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

import "math/rand"

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 es posible barajar un slice (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 realmente aleatorias. Dado un valor de «semilla» concreto, los resultados son totalmente deterministas.

En Go 1.20 y versiones 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 establecer manualmente la semilla del generador de números aleatorios, por ejemplo con la hora actual, antes de obtener cualquier número aleatorio.

rand.Seed(time.Now().UnixNano())
Editar en GitHub El enlace se abre en una nueva ventana o pestaña

Aprende Aleatoriedad

La práctica está bloqueada

Desbloquea 2 ejercicios más para practicar Aleatoriedad