pregunta:
El paquete RAND en Go proporciona la función int31n para generar pseudo aleatorios, pero parece que el mismo resultado en el proceso repetido. ¿Hay alguna forma de obtener resultados verdaderamente aleatorios cada vez que se llame la función?
Respuesta:
El paquete rand emplea un generador de números pseudo aleatorio deterministas (prng). Cada vez que se ejecuta el programa, el PRNG genera la misma secuencia de números basado en un valor inicial fijo conocido como "semilla". Un enfoque común es usar la hora actual en nanosegundos, que cambia cada vez que se ejecuta el programa. Esto se puede hacer usando el siguiente código:
importar "tiempo" func Main () { Rand.Seed (Time.now (). Unixnano ()) fmt.println (rand.int31n (100)) }
import "time"
func main() {
rand.Seed(time.Now().UnixNano())
fmt.Println(rand.Int31n(100))
}
estableciendo una semilla única o utilizando el paquete Crypto/Rand, puede asegurarse de que la función Rand.int31n genere números verdaderamente aleatorios cada vez que se llama.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3