Avatar ·

Cómo inicializar correctamente el generador de números aleatorios en Go?

¡Hola! Soy nuevo en Go y estoy tratando de entender la generación de números aleatorios. Leí que en Go existe el package `math/rand`, pero tengo un problema: cada vez que ejecuto el programa obtengo la misma secuencia de números. Aquí está mi código: ```go package main import ( "fmt" "math/rand" ) func main() { for i := 0; i < 5; i++ { fmt.Println(rand.Intn(100)) } } ``` En cada ejecución la salida es siempre la misma: `81, 87, 47, 59, 81`. Esperaba que los números cambiaran. He oído que es necesario hacer "seed" (inicializar) el generador, pero no entiendo cómo hacerlo correctamente. Cuando intento usar `rand.Seed(time.Now().UnixNano())`, recibo una advertencia del linter de que Seed está obsoleto en Go 1.20. ¿Cómo se inicializa correctamente el generador en versiones modernas de Go? ¿Hay diferencia entre `math/rand` y `crypto/rand`? ¿Qué enfoque se considera correcto para tareas comunes (no criptográficas)? Agradecería una explicación detallada con ejemplos.