El paquete rand se puede utilizar para generar números pseudoaleatorios, que se generan en base a un valor inicial específica (llamada "semilla").
Una opción popular para esta semilla inicial es, por ejemplo, la hora actual en nanosegundos, un valor que probablemente difiera cuando ejecute su programa varias veces. Puede inicializar el generador de números aleatorios con la hora actual con algo como esto:
rand.Seed(time.Now().UnixNano())
(no se olvide de importar el paquete time para eso)
También hay otro paquete llamado crypto/rand que puede ser utilizado para generar mejores valores aleatorios (este generador también puede tomar los movimientos del mouse del usuario, el calor actual del procesador y muchos otros factores en cuenta). Sin embargo, las funciones de este paquete son varias veces más lentas y, a menos que no se escriba un generador de frases de paso (u otras cosas relacionadas con la seguridad), el paquete de rand normal probablemente sea correcto.
Otra propiedad útil de plain rand es que puede reproducir los resultados al reutilizar una semilla. –
Con go1 time.Nanoseconds() no parece existir. Puede usar rand.Seed (time.Now(). UnixNano()) – Blacksad