Avatar ·

¿Cómo generar una cadena aleatoria de longitud fija en Go?

¡Hola a todos! Acabo de empezar a aprender Go y me encontré con una tarea: necesito generar cadenas aleatorias de longitud fija, por ejemplo, para crear contraseñas temporales o identificadores de sesión. Probé usar el paquete `math/rand` y simplemente seleccionar caracteres aleatorios de un conjunto de letras, pero me encontré con un problema: las cadenas no son completamente aleatorias y a veces incluso se repiten. Aquí está mi código actual: ```go package main import ( "fmt" "math/rand" ) func main() { fmt.Println(randString(10)) } func randString(n int) string { var letters = []rune("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ") b := make([]rune, n) for i := range b { b[i] = letters[rand.Intn(len(letters))] } return string(b) } ``` El problema es que cada vez que ejecuto el programa obtengo la misma cadena, a menos que llame a `rand.Seed`. Leí que en Go 1.20 `math/rand` se inicializa automáticamente, pero aún así no estoy seguro de que sea el mejor enfoque.