Tengo un gran script en Python. Me inspiré en el código de otras personas, así que terminé usando el módulo numpy.random
para algunas cosas (por ejemplo, para crear una matriz de números aleatorios tomados de una distribución binomial) y en otros lugares utilizo el módulo random.random
.Diferencias entre numpy.random y random.random en Python
¿Puede alguien decirme las principales diferencias entre los dos? Al mirar la página web del documento para cada uno de los dos, me parece que numpy.random
tiene más métodos, pero no tengo claro cómo la generación de los números aleatorios es diferente.
La razón por la que pregunto es porque necesito sembrar mi programa principal para depuración. Pero no funciona a menos que use el mismo generador de números aleatorios en todos los módulos que estoy importando, ¿es correcto?
Además, leí aquí, en otra publicación, una discusión sobre NO usar numpy.random.seed()
, pero realmente no entendía por qué esta era una mala idea. Realmente apreciaría que alguien me explique por qué este es el caso.
Como nota alejadas, a veces es NECESARIO utilizar * ni *, ya que el tornado Mersenne no produce secuencias aleatorias de entropía suficiente para criptográfica (y algunos propósitos científicos inusuales). En esos raros casos, a menudo necesita [Crypto.Random] (https://www.dlitz.net/software/pycrypto/apidoc/Crypto.Random.random-module.html), que puede usar fuentes de entropía específicas del sistema operativo. para generar secuencias aleatorias no deterministas de calidad mucho más alta que la disponible en 'random.random' solo. Sin embargo, usualmente no necesitas esto. – SingleNegationElimination
Gracias Hannnele. ¡Tus ideas fueron realmente muy útiles! Resulta que no puedo salir usando SOLAMENTE un solo generador de números aleatorios, (que debe ser numpy ya que al azar no produce distribuciones binomiales) porque partes de mi programa llaman a otro programa que usa al azar. Tendré que sembrar los dos generadores. – Laura
"si sabe qué número tiene ahora, es posible predecir con certeza absoluta qué número vendrá después". Creo que esta afirmación podría necesitar alguna aclaración. Lo que quiere decir es que si conoce el * estado interno * del generador, puede reproducir la secuencia, que es lo que hace cuando siembra el generador. Dado un solo número de salida del generador, no puede predecir el próximo número. El período es tan grande que probablemente necesitaría una secuencia larga de números antes de poder calcular dónde se encuentra en la secuencia pseudoaleatoria y así predecir la siguiente. –