En este documento , que se refiere al comando "establecer semilla", las personas de Stata discuten cuestiones relacionadas con la configuración de semillas al generar números pseudoaleatorios.
Un notable "no" es "no use en serie la secuencia de números naturales como semillas, porque tiene un patrón y pone en peligro la seudoaleatoriedad".
Un "do" notablemente bromista de una cuarta parte es establecer solo una semilla durante su vida útil y luego registrar el "estado" del proceso generado al final de cada experimento, para que el próximo experimento continúe en el punto donde el proceso se ha detenido.
Obviamente, el consejo anterior depende del recuento esperado de números pseudoaleatorios que uno generará en su vida de investigación. Quizás un tornado de Mersenne cubriría las necesidades de por vida de muchos investigadores ...
Ahora, no tengo mucha experiencia con respecto a los PRNG en teoría o en la práctica, por lo que no puedo discutir sobre estas sugerencias; deberían probarse como válidas o inválidas por razones teóricas y estadísticas matemáticas estrictas.
Entonces, mis preguntas son
1) ¿Puede ayudar a explicar o invalidar los consejos anteriores, o señalar una referencia que se ocupe de tales problemas?
2) ¿Puede proporcionar referencias que ofrezcan "mejores prácticas" en el establecimiento de semillas?
3) ¿Cómo lo haces en tu propio trabajo y por qué?
Un hilo relacionado (aunque mucho más centrado) es ¿
Establecer semilla antes de cada bloque de código o una vez por proyecto?
Tengo la sensación de que tal vez debería ser un wiki de la comunidad, los mods por favor decidan sobre eso.
fuente
Respuestas:
Por lo que vale, esto se basa en la experiencia y no en el análisis matemático:
Creo que a menos que esté haciendo criptografía, donde los patrones sutiles pueden ser muy malos, la semilla que establezca no hace la diferencia, siempre que use PRNG aceptados como Mersenne Twister y no los viejos como generadores lineales congruenciales. Por lo que yo sé, no hay manera de que pueda saber qué número aleatorio va a salir de una semilla dada sin ejecutar el PRNG (asumiendo que es una decente), de lo contrario usted acaba de tomar ese nuevo algoritmo y el uso que como su generador de números aleatorios.
Otra perspectiva: ¿cree que es probable que cualquier patrón sutil en su simulación Montecarlo sea de mayor magnitud que todos los errores de medición, confusión y errores introducidos por otros supuestos de modelado?
Solo usaría una semilla aleatoria al principio para la reproducibilidad, y no establecería una antes de cada llamada, a menos que esté depurando, donde necesito asegurarme de que dos algoritmos diferentes produzcan el mismo resultado para los mismos datos de entrada.
Descargo de responsabilidad: si simula reactores nucleares o sistemas de control de misiles o pronóstico del tiempo, lo mejor es consultar a expertos en el dominio, no me hago responsable en ese caso.
fuente