GENERACION DE NUMEROS ALEATORIOS U paso clave e smulacó es teer rutas que geere varables aleatoras co dstrbucoes especfcas: epoecal, ormal, etc. Esto es hecho e dos fases. La prmera cosste e geerar ua secueca de úmeros aleatoros dstrbudos uformemete etre 0 y 1. Luego esta secueca es trasformada para obteer los valores aleatoros de las dstrbucoes deseadas. La prmera fase es la que os cocere ahora. I. PROPIEDADES DESEADAS DE BUENOS GENERADORES Veamos como opera los geeradores para poder eteder porque uo puede ser cosderado mejor que otro. El método más comú es geerar el sguete úmero a partr de los últmos úmeros geerados: Ua de estas fucoes es: f (,,...) 1 2 ( 51 1) mod 16 S comezamos co 0 = 5 los prmeros úmeros geerados so: 10, 3, 0, 1, 6, 15, 12, 13, 2, 11, 8, 9, 14, 7, 4, 5, 10, 3, 0, 1, 6, 15, 12, 13, 2, 11, 8, 9, 14, 7, 4, 5. Las so eteros etre 0 y 15, y s las dvdmos etre 16 obteemos ua secueca de úmeros aleatoros etre 0 y 1: 0.6250, 0.1875, 0.0000,... S coocemos f podemos geerar la secueca e cualquer mometo s teemos el valor de 0. El valor usado para comezar la secueca es llamado semlla. Nótese que f es determístca. Dada la semlla se puede predecr co probabldad 1 los úmeros de la secueca. S embargo, los úmeros so aleatoros e el setdo de que pasa pruebas estadístcas de aleatoredad y por esto so llamados pseudo-aleatoros. E muchos casos se prefere estos úmeros e vez de los completamete aleatoros ya que es ecesaro repetr las secuecas e dsttos epermetos. S deseamos otra secueca smplemete cambamos la semlla. Nótese que e el ejemplo la secueca tee u cclo y la logtud del cclo es 16. Alguos geeradores o repte la parte cal de la secueca. Esta parte es llamada cola. E estos casos el perodo del geerador es la logtud de la cola más la logtud del cclo. Semlla Cola Logtud del cclo Perodo Prof. Herbert Hoeger Smulacó IV-1
La propedades deseadas del geerador so las sguetes: 1. Debe ser efcetes computacoalmete: dado que típcamete se requere varos mles de úmeros aleatoros por corrda, el tempo de procesador requerdo para geerarlos debe se pequeño. 2. El perodo debe ser largo: perodos cortos lmta la logtud aprovechable de ua corrda de smulacó porque el recclaje resulta e ua repetcó de secuecas de evetos. 3. Los valores sucesvos debe ser depedetes y uformemete dstrbudos e (0,1): la correlacó etre úmeros sucesvos debe ser pequeña y s es sgfcate dca depedeca. Las prmeras dos propedades so relatvamete fácles de mplemetar. La tercera requere u cojuto de pruebas estadístcas. Etre los geeradores que dscutremos está: Geeradores cogruecales-leales Geeradores de Fboacc eteddos Geeradores Combados II. GENERADORES CONGRUENCIALES-LINEALES (GCL) E 1951, D. H. Lehmer descubró que resduos de potecas sucesvas de u úmero tee bueas propedades aleatoras: a mod m Ua epresó equvalete para calcular después de calcular -1 es: a mod 1 m Los parámetros a y m so llamados multplcador y modulo respectvamete. Muchos de los geeradores actuales so geeralzacoes de la propuesta de Lehmer y tee la sguete forma: ( a1 b) mod m e dode los so eteros etre 0 y m-1, y las costates a y b so o-egatvas. La seleccó de a, b, y m afecta el perodo y la autocorrelacó e la secueca. Etre los resultados de los estudos realzados co estos geeradores teemos: 1. El modulo m debe ser grade. Dado que los está etre 0 y m-1, el perodo uca puede ser mayor que m. 2. Para que el computo de mod m sea efcete, m debe ser ua poteca de 2, es decr, 2 k. E este caso mod m puede ser obtedo trucado el resultado y tomado e k bts a la derecha. Prof. Herbert Hoeger Smulacó IV-2
Ejemplo 45 mod 16 = 45 mod 2 4 = 13 2 7 2 6 2 5 2 4 2 3 2 2 2 1 2 0 128 64 16 8 4 2 1 0 0 1 0 1 1 0 1 13 3. S b es dferete de cero, el perodo mámo posble m se obtee s y solo s: a) Los eteros m y b so prmos relatvos -- o tega factores comues ecepto el 1. b) Todo úmero prmo que sea u factor de m lo es també de a-1. c) a-1 es u múltplo de 4 s m es u múltplo de 4. Todas estas codcoes se cumple s m = 2 k, a = 4c + 1, y b es mpar, dode c, b, y k so eteros postvos. S u geerador tee el perodo mámo posble se llama geerador de perodo completo. Todos los geeradores de perodo completo o so gualmete bueos. So preferbles los geeradores co meor autocorrelacó etre úmeros sucesvos. Por ejemplo, los dos geeradores sguetes so de perodo completo, pero el prmero tee ua correlacó de 0.25 etre -1 y, metras que el segudo tee ua correlacó desprecable de meos de 2-18. 34 (( 2 1) 1) mod 2 18 1 (( 2 1) 1) mod 2 1 35 35 1. GCL multplcatvos Los GCL presetados aterormete so GCL mtos. S el cremeto b es cero, o hay adcó y el geerador es llamado GCL multplcatvo y tee la forma: a mod 1 m Es obvo que estos so más efcetes que los mtos. Efceca adcoal puede ser obteda tomado m = 2 k. Por lo tato hay dos tpos de GCL multplcatvos depededo s m = 2 k o o. 2. GCL multplcatvos co m = 2 k. El argumeto a favor de usar m = 2 k esta e la efceca de la operacó mod. S embargo estos geeradores o so de perodo completo. El mámo perodo posble para estos geeradores es u cuarto del perodo completo: 2 k-2, y se obtee s el multplcador es de la forma 8 3 y la semlla es mpar. A pesar de esto, u cuarto de perodo mámo posble puede ser sufcete para muchas aplcacoes. Prof. Herbert Hoeger Smulacó IV-3
Ejemplo Cosderemos el sguete GCL multplcatvo: 5 mod 2 1 S 0 = 1, obteemos la secueca 5, 25, 29, 17, 21, 9, 13, 1, 5,..., co perodo 8 = /4. S cambamos 0 = 2, la secueca es 2, 10, 18, 26, 2, 10,..., co perodo 4. Para ver que sucede s el multplcador o es de la forma 8 3, cosderemos: 7 mod 2 1 S 0 = 1, obteemos la secueca 1, 7, 17, 23, 1, 7,..., y vemos que ambas codcoes so ecesaras para obteer el perodo mámo. 3. GCL multplcatvos co m 2 k. Ua solucó para los perodos pequeños es usar u modulo m que sea úmero prmo. Co u multplcador a adecuado se puede obteer u perodo de m - 1, que es cas el mámo perodo posble. Note que e este caso uca puede ser cero y su valor esta etre 1 y m - 1. Todo GLC multplcatvo co perodo m - 1 se dce que es de perodo completo. Se puede demostrar que u GLC multplcatvo es de perodo completo s y solo s el multplcador a es ua raíz prmtva del modulo m; a es ua raíz prmtva de m s y solo s a mod m 1 para = 1, 2,..., m- 2. Ejemplo Cosderemos el sguete GCL multplcatvo: 3 mod 1 S 0 = 1, obteemos la secueca 1, 3,..., co perodo 30 y por lo tato es de perodo completo. S usamos a = 5, obteemos la secueca 1, 5, 25, 1,... que es de perodo 3. Note que 3 es ua raíz prmtva de ya que el meor etero postvo de tal que 3 mod = 1 es = 30, y 5 o lo es ya que 5 3 mod = 1. 5 5 El sguete es u GCL multplcatvo es de perodo completo: 5 7 mod ( 2 1) 1 Este geerador data de prcpos de los 70 y fue usado e dversos sstemas de IBM, el sstema operatvo PRIMOS, la lbrería cetífca IMSL, y e los leguajes de smulacó SIMAN y ARENA etre otros. Su cclo es de logtud 2-2 ~ 2.110 9. Este geerador es bastate aceptado ya que ha sdo be probado y produce bueas secuecas de úmeros. Las propedades del GCL so garatzadas solo s los cómputos so realzados eactamete y s errores Prof. Herbert Hoeger Smulacó IV-4
de redodeo. Hay que usar artmétca etera s desbordametos. Hay que teer cudado s se usa leguajes como BASIC ya que los cálculos so hechos usado úmeros reales dode el trucameto puede reducr cosderablemete el perodo. El segudo problema esta e que a -1 puede eceder el mámo etero permtdo e el sstema, causado desbordameto de eteros. Ua solucó esta basada e la sguete detdad (método de Schrage): a mod m = g() + mh() dode g() = a( mod q) - r( dv q) y h() = ( dv q) - (a dv m) dode q = m dv a y r = m mod a. Se puede demostrar que para todos los etre 1 y m-1, hay meos de m-1 epresoes volucradas e calcular g(). Además, s r < q, h() es 0 o 1 y puede ser ferdo de g(): h() es 1 s y solo s g() < 0. Ejemplo Cosderemos el sguete GCL multplcatvo: 5 7 mod ( 2 1) 1 o 16807 1 mod 2147483647 El producto a -1 puede llegar a ser 168072147483646 1.0 45. Ua mplemetacó drecta producrá u desborde de eteros ecepto que el sstema use eteros de 46 bts o más. E uestro caso: a = 16807 m = 2147483647 q = m dv a = 2147483647 dv 16807 = 127773 r = m mod a = 2147483647 mod 16807 = 2836. El programa que se muestra a cotuacó mplemeta correctamete el geerador e sstemas e los cuales el mámo etero sea 2-1 o mayor. Para probar s la mplemetacó es correcta calcule 10.000 comezado co 0 = 1 y debe dar 1043618065. Prof. Herbert Hoeger Smulacó IV-5
Programa program prueba_radom; Salda var,: teger; ra: real; fucto radom(var :teger): real; cost a = 16807; { multplcador } m = 2147483647; { modulo } q = 127773; { m dv a } r = 2836; { m mod a} beg := a*( mod q) - r*( dv q); f < 0 the := + m; radom := /m; ed; 1043618065 beg :=1; { semlla } for :=1 to 10000 do ra:=radom(); wrtel(); ed. III. GENERADORES DE FIBONACCI EXTENDIDOS Ua secueca de Fboacc se geera por la sguete relacó: = -1 + -2 Se puede tetar usar u geerador de la forma: = ( -1 + -2 ) mod m s embargo esta secueca o tee bueas propedades aleatoras y e partcular tee alta correlacó seral. El sguete geerador, que sgue este efoque, pasa la mayoría de las pruebas estadístcas: = -5 + -17 mod 2 k Para mplemetar este geerador se puede usar 17 localdades de memora L[1],..., L[17] las cuales so calzadas co 17 eteros que o sea todos pares. Fjamos y j e 5 y 17 respectvamete, y el sguete procedmeto es ejecutado para obteer los úmeros aleatoros: := L[] + L[j]; L[] := ; := - 1; f = 0 the := 17; j:= j - 1; f j = 0 the j := 17; Prof. Herbert Hoeger Smulacó IV-6
La adcó e la prmera líea es automátcamete mod 2 k e maquas de k-bts y artmétca de complemeto a 2. El perodo del geerador es 2 k (2 17-1) que es cosderablemete mayor al que se puede obteer co GCL. IV. GENERADORES COMBINADOS Es posble combar geeradores para obteer mejores geeradores. Alguas de las téccas usadas so: 1. OR-eclusvo de úmeros aleatoros de dos o más geeradores. Esta técca es smlar a la ateror ecepto que la suma es reemplazada por u or-eclusvo bt por bt. Se ha demostrado que esta técca aplcada a úmeros lgeramete aleatoros puede ser usada para geerar úmeros co mayor aleatoredad. 2. Barajeo. Usa ua secueca como u ídce para decdr que úmero geerado por otra secueca será retorado. Por ejemplo, uo de estos algortmos usa u arreglo de tamaño 100 que cotee úmeros de ua secueca aleatora. Para geerar u úmero aleatoro se geera u úmero aleatoro y (etre 0 y m-1) para obteer el ídce = 1 + 99y / (m-1). El valor del -esmo elemeto del arreglo es devuelto. U uevo valor es calculado y almaceado e la -esma localdad. IV. GENERADORES CONGRUENCIALES LINEALES COMBINADOS Auque estos geeradores cae detro de la seccó ateror, su relevaca amerta su dscusó por separado. 5 Cosderemos uevamete el geerador 7 mod ( 2 1). E la medda que las computadoras 1 se ha vuelto más rápdas, la logtud de su cclo se ha torado adecuada ya que se corre el resgo de que, e uas cuatas horas de smulacó, la secueca se agote y se repta varas veces trayedo como cosecueca seras dudas e cuato a la valdez de los resultados. Supogamos que teemos ua máqua co u procesador de 1GHz. Esto so 10 9 cclos o tcs del reloj por segudo. Supogamos també que el procesador es capaz de geerar u úmero aleatoro por cclo (esto es muy optmsta ya que e realdad se requere varos cclos para producr u úmero aleatoro debdo a las 9 operacoes volucradas). Bajo estas codcoes se agotaría la secueca e 2.110 9 2. 1seg. Por 10 supuestos que será e más tempo, pero se observa que efectvamete esta secueca es fáclmete agotable durate ua smulacó. Ua maera para cosegur geeradores co perodos más largos cosste e sumar úmeros aleatoros de dos o más geeradores. El sguete resultado debdo a L Ecuyer (http://www.ro.umotreal.ca/~lecuyer/) muestra como esto puede ser realzado. S W,1, W,2,..., W,k so varables aleatoras dscretas depedetes, o ecesaramete détcamete dstrbudas, y ua de ellas, dgamos la prmera W,1, es etera y uforme e 0 a m 1-1, etoces k W W, j mod m1 1 j1 Prof. Herbert Hoeger Smulacó IV-7
es uforme sobre los eteros 0 a m 1-2. Veamos como esto puede ser usado para combar geeradores. Sea X,1, X,2,..., X,k la -esma salda de k geeradores cogruecales multplcatvos dferetes y dode el j-esmo geerador tee modulo prmo m j y su multplcador a ha sdo seleccoado de forma tal que tega perodo mámo m j 1. L Ecuyer sugere geeradores combados de la forma: k j1 X ( 1) X, j mod m1 1 j1 X X 0 m1 R m 1 1 X 0 m1 ( m1 1)( m2 1)...( m 1) y el perodo mámo posble es P k. k 1 2 Uo de estos geeradores combados usa: = 40014-1 mod (2-85) y = 40692y -1 mod (2-249) para obteer w = ( - y ) mod (2-86) R w (2 85) (2 86) (2 85) w w 0 0 (2 86)(2 250) 18 co u perodo apromado P 2.0. E este caso se ecesta dos semllas 2 1 o y 2 y o para comezar la geeracó. Hacedo cálculos y supuestos smlares a los aterores, tedríamos que la 18 2.0 secueca se cosumría e 72. 93 años. 9 10 606024365 Obsérvese que los úmeros que produce los dos geeradores báscos ( y y ) está etre 0 y 2 apromadamete, y la secueca w solo se repte cuado estos geeradores báscos, ambos, cocde uevamete e los valores usados para arracarlos (las semllas: o y y o ), es decr, la secueca se repte solo cuado los geeradores báscos se scroza e = o y y = y o. No es como e el caso de u solo geerador e que al repetrse u úmero de la secueca esta també se repta. Ahora los úmeros puede repetrse s que mplque que la secueca se repta. Prof. Herbert Hoeger Smulacó IV-8
Para fes de lustracó cosderemos geeradores be cortos como so: obteedo las sguetes secuecas: = 3-1 mod 5 y = 5y -1 mod 7 w = ( - y ) mod 7 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 3 4 2 1 3 4 2 1 3 4 2 1 3 4 2 y 3 1 5 4 6 2 3 1 5 4 6 2 3 1 5 4 w 2 6 5 2 1 1 1 3 6 5 0 5 2 6 5 (5 1)(7 1) y vemos que el perodo de w es de tamaño 12 cocdedo co la epresó del perodo 2 apromado establecdo por L Ecuyer. Observe també que el cclo para se repte 3 veces y el de y se repte 2 ates de que ambas secuecas cocda uevamete e las semllas cales y se repta el cclo de w, y que a pesar de que e la secueca w se repte úmeros esto o mplca que se repta la secueca. Para eteder los valores de w e la tabla ateror, hay que teer clara la defcó de mod. Cosderemos -340 mod 60 y 340 mod 60. La fucó modulo se defe como la catdad e que u úmero ecede el mayor etero múltplo del dvsor que o sea mayor que ese úmero. E este caso, -340 esta etre -360 y -300, así que -360 (-6*60)es el mayor múltplo meor que -340 (-300 es mayor que -340). Restamos -360 de -340 y obteemos 20. Así que -340 mod 60 = 20 y 340 mod 60 = 40. La fucó mod sempre retora valores postvos. -420-360 -300-240 -180-120 -60 0 60 120 180 240 300 360 --+----+----+----+----+----+----+----+----+----+----+----+----+----+-- -360-340 300 340 = == 20 40 S los 72.93 años, que e realdad so mucho más debdo a uestro optmsta supuesto de geerar u aleatoro por cclo, mpresoa, cosderemos el sguete geerador que esta sedo usado e la últmas versoes de ARENA: Z Z Y 1, 2, (1403580Z (527612Z ( Z 1, (2 R (2 (2 Z Y 2, ) 2, 1 208) 209) 208) 1, 2 mod 810728Z 1370589Z Y Y (2 0 0 1, 3 209) ) 2, 3 ) mod mod (2 (2 209) 22853) Prof. Herbert Hoeger Smulacó IV-9
Co u perodo apromado de 3.110 57. Hacedo uevamete los supuestos y cálculos aterores 57 3.110 40 teemos 9.80 años. 9 10 606024365 Este geerador ecesta 6 semllas (Z 1,0, Z 1,1, Z 1,2, Z 2,0, Z 2,1, Z 2,2 ), y a pesar de que es u poco más costoso computacoalmete que u geerador smple, co las velocdades de la máquas de hoy e día o hay gú problema e usarlos. L Ecuyer determo sus parámetros después de u eteso estudo. V. ALGUNOS GENERADORES DE NUMEROS ALEATORIOS U geerador GCL muy popular y que ya hemos mecoado varas veces es: 5 7 mod ( 2 1) 1 Este es usado e el sstema SIMPL/I de IBM (1972), APL de IBM (1971), el sstema operatvo PRIMOS de Prme Computer (1984), y la lbrería cetífca de IMSL (1987). Tee bueas propedades aleatoras y es recomedado como u estádar mímo. U estudo de geeradores multplcatvos GCL co modulo m = 2-1 que comparo su efceca y aleatoredad, recomeda los dos sguetes como los mejores: 48. 271 mod ( 2 1) 1 69. 621 mod ( 2 1) 1 El sguete geerador es usado e SIMSCRIPT II.5 y e FORTRAN DEC-20: 630. 360. 016 mod ( 2 1) 1 El sguete geerador es usado e el sstema Pascal de la Uversdad de Sheffeld para computadores Prme: 16. 807 mod 2 1 Dado que 16.807 o es de la forma 8 3, este geerador o tee el perodo mámo posble de 2-2. També es usado e la subruta UNIFORM del paquete estadístco SAS, pero ua técca de barajeo es usada para mejorar la aleatoredad. SIMULA e UNIVAC usa: 13 5 mod 2 Alguos autores dce que o tee bueas propedades aleatoras. El sstema operatvo UNIX soporta e sguete GCL mto: 1 (. 1103515.. 245 + 12.345) mod 2 1 35 Dseñar uevos geeradores parece muy smple, pero muchos geeradores propuestos por epertos estadístcos fuero ecotrados defcetes. Por lo tato es mejor usar u geerador que ha sdo etesamete probado e vez de vetar uo uevo. Prof. Herbert Hoeger Smulacó IV-10
VI. SELECCIÓN DE LA SEMILLA E prcpo la semlla o debería afectar los resultados de la smulacó. S embargo, ua mala combacó de semlla y geerador puede producr coclusoes erróeas. S el geerador es de perodo completo y solo se requere ua varable aleatora, cualquer semlla es buea. Hay que teer especal cudado e smulacoes que requere úmeros aleatoros para más de ua varable (smulacoes de secuecas múltples), que es la mayoría de los casos. Por ejemplo, la smulacó de ua cola smple requere geerar llegadas y servcos aleatoros y requere dos secuecas de úmeros aleatoros. Recomedacoes para la seleccó de las semllas: 1. No use cero. Cero fucoa para geeradores GCL mtos pero hace que los multplcatvos se quede e cero. 2. Evte valores pares. S u geerador o es de perodo completo (por ejemplo GCL multplcatvo co modulo m = 2 k ) la semlla debe ser mpar. E otros casos o mporta. 3. No subdvda ua secueca. Usar ua úca secueca para todas las varables es u error comú. Por ejemplo, e la secueca u 1, u 2,... geerada a partr de la semlla u 0, el aalsta usa u 1 para geerar el tempo etre llegadas, u 2 para el tempo de servo, etc. Esto puede resultar e ua fuerte correlacó etre las varables. 4. Use secuecas que o se solapa. Cada secueca requere su semlla. S la semlla es tal que hace que dos secuecas se solape, habrá correlacó etre las secuecas y estas o será depedetes. Cosderemos el ejemplo trval de car las dos secuecas de ua cola smple co la msma semlla, lo cual haría las secuecas détcas e troducría ua fuerte correlacó postva etre los tempos etre llegadas y los tempos de servco. Esto puede llevar a coclusoes erróeas. Hay que seleccoar las semllas de forma tal que las secuecas o se solape. S u 1, u 2,... geerada a partr de la semlla u 0, y ecestamos por ejemplo 10.000 tempos etre llegadas, 10.000 tempos de servcos, etc., podemos seleccoar u 0 como la semlla de la prmera secueca, u 10.000 para la seguda, u 20.000 para la tercera, etc. Los u se puede determar medate u programa de prueba que llama al geerador o se puede calcular drectamete para geeradores GCL mtos o multplcatvos (b = 0) co la formula sempre que los cálculos sea eactos: a o ba ( 1) a 1 5. Reuse semllas e replcacoes sucesvas. S el epermeto es replcado varas veces, la secueca o ecesta ser recalzada y se puede usar la semlla dejada e la replcacó preva. 6. No use semllas aleatoras. Semllas aleatoras, como por ejemplo la hora del día, causa dos problemas: La smulacó o puede ser reproducda. No se puede garatzar que secuecas múltples o se solape. mod m Prof. Herbert Hoeger Smulacó IV-11
VII.MITOS SOBRE LA GENERACIÓN DE NÚMEROS ALEATORIOS Estos so alguos mtos que aalstas desformados puede creer certos: 1. U cojuto de operacoes complejas lleva a resultados aleatoros. Resultados dfícles de predecr o ecesaramete so aleatoros. Es mejor usar operacoes smples cuya aleatoredad pueda ser evaluadas aalítcamete. 2. Ua sola prueba como la ch-cuadrado es sufcete para probar s el geerador es bueo. Obvamete la secueca 0, 1, 2,..., m-1 o es aleatora, s embargo pasa la prueba ch-cuadrado. E geeral se debe evtar vetar geeradores a o ser que se sea u eperto estadístco. 3. Números aleatoros so mpredecbles. U secueca realmete aleatora debe ser completamete mpredecble. Este o es el caso para los geeradores de úmeros pseudo-aleatoros. Dada ua escasa secueca de úmeros de u GCL, fáclmete se puede determar los parámetros a, b, y m, y predecr toda la secueca. Por lo tato, GCL o so aptos e aplcacoes crptográfcas e las cuales se requere secuecas mpredecbles. 4. Alguas semllas so mejores que otras. Esto puede ser certo e alguos casos, por ejemplo e 17 ( 9806 + 1) mod ( 2 1) 1 s se usa como semlla 37911 el geerador se queda pegado e este úmero. Geeradores que tega restrccoes respecto a la semlla debe ser evtados. 5. Implemetacó eacta o es relevate. El perodo y la aleatoredad de u geerador se garatza solo s es mplemetado eactamete s desbordes, trucametos o redodeos. Prof. Herbert Hoeger Smulacó IV-12