posiciones - establecer semillas aleatorias en todo el programa en python
matriz aleatoria python (5)
Tengo un programa bastante grande, donde uso funciones del módulo random
en diferentes archivos. Me gustaría poder establecer la semilla aleatoria una vez, en un lugar, para que el programa siempre devuelva los mismos resultados. ¿Puede eso incluso lograrse en python
?
Al comienzo de su aplicación, llame a random.seed(x)
asegurándose de que x sea siempre el mismo. Esto asegurará que la secuencia de números pseudoaleatorios será la misma durante cada ejecución de la aplicación.
El comentario de zss debe resaltarse como una respuesta real:
Otra cosa que las personas deben tener en cuenta: si estás usando numpy.random, entonces necesitas usar numpy.random.seed () para establecer la semilla. El uso de random.seed () no establecerá la semilla para los números aleatorios generados a partir de numpy.random. Esto me confundió por un tiempo. -zss
El principal módulo de python que se ejecuta debería import random
y llamar a random.seed(n)
; esto se comparte entre todas las demás importaciones de random
siempre que en otro lugar no se restablezca el seed.
Jon Clements responde bastante mi pregunta. Sin embargo, no era el problema real: resulta que la razón de la aleatoriedad de mi código era la SVD numpy.linalg porque no siempre produce los mismos resultados para las matrices mal acondicionadas.
¡Asegúrate de verificarlo en tu código si tienes los mismos problemas!
Puede garantizar esto con bastante facilidad utilizando su propio generador de números aleatorios.
Simplemente elija tres números primos grandes (suponiendo que esto no es una aplicación de criptografía), y conéctelos a a, byc: a = ((a * b)% c) Esto le da un sistema de retroalimentación que produce datos bastante aleatorios. Tenga en cuenta que no todos los primos funcionan igual de bien, pero si solo hace una simulación, no debería importar: todo lo que realmente necesita para la mayoría de las simulaciones es un revoltijo de números con un patrón (pseudoaleatorio, recuerde) lo suficientemente complejo como para no coincide de alguna manera con su aplicación.
Knuth habla sobre esto.