La función RANNOR de sed en lenguaje SAS
(1) En primer lugar, cabe señalar que los números pseudoaleatorios normales estándar generados por rannor de SAS se obtienen realizando la transformación de Box-Muller en números pseudoaleatorios distribuidos uniformemente (función ranni). . El número pseudoaleatorio distribuido uniformemente se obtiene mediante el generador de coseno (es decir, la fórmula de iteración de Lehmer), y su fórmula es la siguiente:
donde SAS establece internamente a=397204094, m=2^31-1 ,c=0. Por lo tanto, como se puede ver en el algoritmo anterior, la función de la semilla es dar el valor inicial R0 de este iterador.
(2) Se debe decir que el valor inicial corresponde al número aleatorio generado después. La razón por la que se obtienen los mismos números aleatorios es que después de que la función rannor obtiene la semilla, los números aleatorios generados a partir de entonces son una serie de números pseudoaleatorios basados en la semilla inicial. Podemos ver esto claramente comparando los resultados del siguiente programa:
data test; do x=1234567,123456,12345,0; rannor=rannor(x); p>
ejecutar;
prueba de datos2;
hacer i=1 a 4;
rannor=rannor(1234567);
salida; finalizar;
ejecutar;
proc print data=prueba;
ejecutar;
proc print data=prueba2;
ejecutar;
proc print data=test2;
ejecutar;