Primero, no hay aleatoriedad verdadera en los "números aleatorios" generados por computadora de hoy. Todos los generadores pseudoaleatorios usan métodos deterministas. (Posiblemente, las computadoras cuánticas cambiarán eso).
La tarea difícil es idear algoritmos que produzcan resultados que no puedan distinguirse significativamente de los datos que provienen de una fuente verdaderamente aleatoria.
Tiene razón en que establecer una semilla lo inicia en un punto de partida conocido particular en una larga lista de números pseudoaleatorios. Para los generadores implementados en R, Python, etc., la lista es enormemente larga. El tiempo suficiente para que ni siquiera el proyecto de simulación factible más grande exceda el "período" del generador para que los valores comiencen a reciclarse.
En muchas aplicaciones ordinarias, la gente no establece una semilla. Luego, una semilla impredecible se recoge automáticamente (por ejemplo, de los microsegundos en el reloj del sistema operativo). Los generadores pseudoaleatorios en uso general han sido sometidos a baterías de pruebas, en gran parte consistentes en problemas que han resultado ser difíciles de simular con generadores insatisfactorios anteriores.
Usualmente, la salida de un generador consiste en valores que no son, para propósitos prácticos, distinguibles de números elegidos verdaderamente al azar de la distribución uniforme enLuego, esos números pseudoaleatorios se manipulan para que coincidan con lo que uno obtendría al azar de otras distribuciones como binomial, Poisson, normal, exponencial, etc.(0,1).
Una prueba de un generador es ver si sus pares sucesivos en 'observaciones' simuladas como
realmente parecen estar llenando el cuadrado de la unidad al azar. (Hecho dos veces a continuación). El aspecto ligeramente veteado es el resultado de la variabilidad inherente. Sería muy sospechoso obtener una trama que se viera perfectamente uniformemente gris. [En algunas resoluciones, puede haber un patrón de muaré regular; cambie la ampliación hacia arriba o hacia abajo para deshacerse de ese efecto falso si ocurre.]Unif(0,1)
set.seed(1776); m = 50000
par(mfrow=c(1,2))
u = runif(m); plot(u[1:(m-1)], u[2:m], pch=".")
u = runif(m); plot(u[1:(m-1)], u[2:m], pch=".")
par(mfrow=c(1,1))
A veces es útil establecer una semilla. Algunos de estos usos son los siguientes:
Al programar y depurar es conveniente tener resultados predecibles. Muchos programadores ponen una set.seed
declaración al comienzo de un programa hasta que se escriben y se depuran.
Al enseñar sobre simulación. Si quiero mostrarles a los estudiantes que puedo simular tiradas de un dado justo usando la sample
función en R, podría hacer trampa, ejecutar muchas simulaciones y elegir la que más se acerque a un valor teórico objetivo. Pero eso daría una impresión poco realista de cómo funciona realmente la simulación.
Si configuro una semilla al comienzo, la simulación obtendrá el mismo resultado cada vez. Los estudiantes pueden corregir su copia de mi programa para asegurarse de que proporcione los resultados previstos. Luego pueden ejecutar sus propias simulaciones, ya sea con sus propias semillas o dejando que el programa elija su propio punto de partida.
Por ejemplo, la probabilidad de obtener el total de 10 al tirar dos dados justos esCon un millón de experimentos de 2 dados, debería obtener una precisión de dos o tres lugares. El margen de error de simulación del 95% es de aproximadamente
3/36=1/12=0.08333333.
2(1/12)(11/12)/106−−−−−−−−−−−−−−−√=0.00055.
set.seed(703); m = 10^6
s = replicate( m, sum(sample(1:6, 2, rep=T)) )
mean(s == 10)
[1] 0.083456 # aprx 1/12 = 0.0833
2*sd(s == 10)/sqrt(m)
[1] 0.0005531408 # aprx 95% marg of sim err.
Al compartir análisis estadísticos que implican simulación.
Hoy en día, muchos análisis estadísticos implican alguna simulación, por ejemplo, una prueba de permutación o una muestra de Gibbs. Al mostrar la semilla, permite a las personas que leen el análisis replicar los resultados exactamente, si así lo desean.
Al escribir artículos académicos relacionados con la aleatorización. Los artículos académicos generalmente pasan por múltiples rondas de revisión por pares. Un diagrama puede usar, por ejemplo, puntos aleatorizados aleatoriamente para reducir el trazado excesivo. Si los análisis deben modificarse ligeramente en respuesta a los comentarios de los revisores, es bueno que una fluctuación de fase particular no relacionada no cambie entre las rondas de revisión, lo que puede ser desconcertante para los revisores particularmente quisquillosos, por lo que debe establecer una semilla antes de la fluctuación.
2^19937 − 1
. La semilla es el punto de esta secuencia extremadamente larga donde comienza el generador. Entonces sí, es determinista.