Está en la página 1de 15

3.

- Generacin de nmeros aleatorios


Una vez construido un modelo, debemos experimentar sobre l y para poder ejecutarlo
necesitamos dar valores a las variables de tipo exgeno. De esta forma podremos obtener valores de
salida y pasaremos a realizar un anlisis de los mismos. Algunas de las variables de entrada son de
tipo aleatorio por lo que se tendrn que generar valores que simulen dichas entradas. Para generar
variables aleatorias que sigan determinadas funciones de probabilidad necesitamos partir de series de
nmeros que cumplan ciertas caractersticas de aleatoriedad. La generacin de dichos nmeros es lo
que se va a abordar en este tema.
3.1.- Introduccin
Es grande l a necesidad de usar nmeros aleatorios y son muchas las aplicaciones que
requieren de ellos, tales como:
Simulacin: para simular las entradas de aquellas variables aleatorias (no
determinsticas).
Juegos o teora de decisiones.
Clculo numrico: por ejemplo en la resolucin de integrales.
Teora del muestreo: aquellos casos en los que sea demasiado costoso realizar la
muestra.
Programacin: generacin de entradas para realizar las pruebas de los algoritmos y
programas.
Antes se ha hecho referencia a nmero aleatorio, en realidad no se puede hablar de la
aleatoriedad o no aleatoriedad de un nmero aislado, sino de ste en relacin con otros, es decir, la
aleatoriedad es una caracterstica que posee o no una serie de nmeros. A partir de esta aclaracin
Generacin de nmeros aleatorios

52
siempre que nos refiramos a un nmero aleatorio estaremos hablando de un nmero perteneciente a
una serie aleatoria.
3.2.- Generadores de nmeros. Tipos
Las caractersticas deseables para los generadores de nmeros aleatorios son las siguientes:
Los nmeros generados no se deben repetir frecuentemente (en ciclos).
Las series generadas deben ser reproducibles.
Rapidez en la obtencin de los nmeros.
Almacenamiento mnimo. Tanto el propio generador como los nmeros por el
generados.
Los nmeros generados han de estar uniformemente distribuidos (todos deben tener la
misma probabilidad de salir).
Los valores generados deben ser independientes unos de otros, es decir, que la
obtencin de cierto valor no est condicionado por los valores obtenidos anteriormente.
Vamos a ver distintos mtodos y para cada uno evaluaremos cules de las caractersticas
descritas arriba cumple y cules no.
1) Manual. Por ejemplo, lanzar un dado o realizar extracciones con reemplazamiento de
bolas numeradas dentro de una urna.
Ventajas:
- Las series obtenidas son realmente aleatorias.
Inconvenientes:
- Lentitud.
- Las series obtenidas son irreproducibles.
- Requieren gran cantidad de almacenamiento ya que habra que almacenar la serie
obtenida.
2) Tablas. (De hasta 100000 nmeros).
Ventajas:
- Las series obtenidas son reproducibles.
Inconvenientes:
- Lentitud.
- Requieren gran cantidad de almacenamiento.
Generacin de nmeros aleatorios

53
3) Computacin analgica. Las series se obtienen mediante fenmenos fsicos.
Ventajas:
- Las series obtenidas son realmente aleatorias.
- Rapidez.
Inconvenientes:
- Las series obtenidas son irreproducibles.
4) Computacin digital. Dada una funcin y una semilla, se van generando los nmeros
aleatorios.
Ventajas:
- Rapidez.
- Pocos requerimientos de almacenamiento.
- Las series obtenidas son reproducibles.
Inconvenientes:
- Los nmeros obtenidos no son independientes.
Nosotros, nos vamos a centrar en la utilizacin de stos ltimos. Por tanto, vamos a entender
por Generador de nmeros aleatorios, un cdigo al que vamos a llamar cada vez que necesitemos una
aproximacin a un nmero aleatorio.
En 1946, Von Neumann propuso un mtodo para obtener nmeros aleatorios de k-cifras, a
partir de una semilla. Dicho mtodo es conocido como Mtodo de los cuadrados centrales.
El mtodo consiste en partir de una semilla y elevarla al cuadrado, el siguiente nmero de la
serie se obtendra como resultado de extraer las k-cifras centrales del cuadrado obtenido y as
sucesivamente.
El problema que presenta este mtodo es que los ciclos se producen rpidamente.
3.3.- Generadores congruenciales lineales
Nos vamos, pues, a centrar en los mtodos de computacin digital. A los nmeros obtenidos
mediante dichos mtodos se les conoce como nmeros pseudoaleatorios, dado que, como se ha
mencionado ms arriba, los nmeros obtenidos estn uniformemente distribuidos pero no son
independientes. Vamos a generar nmeros uniformemente distribuidos en el intervalo (0,1) (U(0,1)),
dado que es fcil pasar desde ellos a otros que estn en otro intervalo.
Generacin de nmeros aleatorios

54
3.3.1.- Introduccin
Hacia 1949, Lehmer introduce un mtodo de generacin de nmeros aleatorios mediante el
cual un trmino de la serie se obtiene como funcin del trmino inmediatamente anterior (x
n
=f(x
n-1
)).
La funcin aplicada es la siguiente:
n m x siendo m c ax x
n n n
< +
+
0 , mod ) (
1


En el generador distinguimos cuatro elementos:
x
0
, es el valor inicial o semilla.
a, multiplicador, siendo m a < 0 .
c, incremento, siendo m a < 0 .
m, mdulo.
Se llama periodo a la subcadena, dentro de la serie generada, en la que no hay repeticiones de
nmeros y longitud de periodo al nmero de elementos de dicha subcadena.
La repeticin de nmeros en la serie puede ser aleatoria, pero dado el mtodo utilizado para la
generacin de las mismas, en el momento en el que se repite un valor ya empieza a repetirse todo el
periodo, por lo que interesan mtodos que garanticen longitudes de periodo grandes.
3.3.2.- Tipos de Generadores congruenciales lineales
Podemos distinguir dos tipos de estos generadores que se diferencian en el valor del
incremento.
G.C. Multiplicativos. En ellos el incremento, c, es 0. Este tipo de generadores fueron los
introducidos por Lehmer, aunque mencion como posibilidad la idea de tomar c0.
m ax x
n n
mod
1

+

G.C. Mixtos. En ellos el incremento es distinto de 0. Fueron introducidos por Thomson
hacia 1958.
m c ax x
n n
mod ) (
1
+
+

Los primeros presentan la ventaja de ser ms rpidos, al tener que realizar menos operaciones
en el clculo de los elementos. Sin embargo, la longitud de periodo que se alcanza en las series
generadas por ellos son menores que la alcanzadas en las series generadas por los segundos.
Los valores de a=0 y a=1, producen series no aleatorias.
Supongamos a=0, nos quedara el generador de la forma m c x
n
mod
1

+
, es decir, que
siempre saldra la constante c.
Si a=1, el generador es m c x x
n n
mod ) (
1
+
+
.Desarrollando algunos de los elementos que se
van obteniendo, tenemos:
Generacin de nmeros aleatorios

55
m c x x mod ) (
0 1
+
m c x m m c x m c x x mod ) 2 ( mod ) mod ) (( mod ) (
0 0 1 2
+ + +
m c x x mod ) 3 (
0 3
+
y as para todos los trminos. Vamos obteniendo que un trmino es siempre la semilla ms un mltiplo
de c y todo mdulo m, y esta serie no es aleatoria.
Puede interesarnos dotar de ms independencia a los valores obtenidos. Esto lo podemos
conseguir no obteniendo todos los valores consecutivos de una serie sino obteniendo valores de k en k
posiciones, es decir a partir de un elemento x
n
no obtenemos el elemento x
n+1
sino el elemento x
n+k
.
Para ello tendremos que elegir:
x
0

=x
0

a

=a
k

c
a
a
c
k
1
1
'


m=m
Demostracin: tenemos que m c ax x
n n
mod ) (
1
+
+
, obteniendo nuevos
trminos: m c ac x a m c m c ax a m c ax x
n n n n
mod ) ( mod ) ) mod ) ( (( mod ) (
2
1 2
+ + + + +
+ +
m c ac x a x a
m c m c m c ax a a m c ax x
n n
n n n
mod ) (
mod ) ) mod ) ) mod ) ( ( (( mod ) (
2 3
2 3
+ + +
+ + + +
+ +

En general
m c ac c a c a x a x
k k
n
k
k n
mod ) (
2 1
+ + + + +

+
L , operando queda: m c
a
a
x a x
k
n
k
k n
mod )
1
1
(

+
+
,
Esto tambin se puede utilizar para paralelizar la obtencin de los trminos. Si tenemos un
ordenador con procesamiento paralelo, podemos, partiendo de la semilla asignar a cada procesador la
generacin de una subsecuencia de trminos. Por ejemplo con tres procesadores se iran generando los
trminos de la siguiente forma:
x
0
x
1
x
2
x
3
x
4
x
5
x
6
.........................

Generacin de nmeros aleatorios

56
As a partir de un nmero no tenemos que generar el siguiente trmino sino el que hay k-
posiciones despus de l.
3.3.3.- Eleccin del mdulo
Nuestro objetivo es generar series con el mayor nmero posible de elementos, es decir series
con mxima longitud de periodo. Para ello, el mdulo que se elija para el generador ha de ser grande
dado que x elemento de la serie se cumple que 0x<m, es decir, la longitud de periodo va a ser m
como mximo.
Por otro lado nos interesa que la obtencin de la serie se realice de forma rpida. Dado que en
el mtodo que estamos tratando se ha de realizar un mdulo, consistente en una divisin, que es
comparativamente la operacin ms lenta, podemos encontrar valores de mdulo que simplifiquen
dicha operacin. Si en un sistema decimal elegimos como mdulo m=10
k
, la operacin mdulo
aplicada a un nmero, consistira simplemente en quedarnos con las ltimas k ltimas cifras de dicho
nmero. Al trabajar el ordenador en un sistema binario, la operacin se logra realizar con rapidez si se
elige un mdulo de la forma m=2
e
, y el mdulo va a consistir en tomar las e ltimas cifras del nmero.
Uniendo los dos aspectos anteriores nos interesa un elegir como mdulo un nmeros de la
forma 2
e
y que sea lo ms grande posible, siempre y cuando sea posible su representacin en el
ordenador. Por tanto si consideramos que w es el mayor nmero representable, tomaremos un e tal que
2
e
sea lo ms prximo a w (2
e
w).
Esta eleccin de mdulo presenta, no obstante, un inconveniente: las cifras menos
significativas del nmero no se forman de manera tan aleatoria como las posiciones ms altas (las
cifras ms bajas ciclan ms rpidamente que las ms altas). Esto se demuestra observando que las
posiciones ms bajas forman una subsucesin cogruencial lineal de periodo menor que el de las cifras
ms altas (2
e
).
Demostracin: sea m=
2e
y r<e2
r
/2
e

r
n n
x y 2 mod , es la sucesin de los r-cifras ms a la derecha de x
n

m c ax x
n n
mod ) (
1
+
+

+ +
+ +
r
n
r
n
r
n n
c ax m c ax x y 2 mod ) ( 2 mod ) mod ) (( 2 mod
1 1

(por ser 2
r
divisor de m)
r
n
r r
n
c ay c ax 2 mod ) ( 2 mod ) ) 2 mod (( + +
queda demostrado que la sucesin {y
n
} es una sucesin congruencial lineal, su periodo
mximo es 2
r
, mientras que el periodo mximo de la sucesin {x
n
} es m=2
e
que es un periodo mayor.
Esto significa que las r-ltimas cifras de los elementos ciclan ms rpidamente.

Generacin de nmeros aleatorios

57
Para evitar este inconveniente, si nos interesa que las cifras ms bajas se comporten de forma
ms aleatoria, podemos tomar como mdulo:

'

t
<
1 2
,
e
m
w m que tal primo n m

para que as se tengan pocos divisores que son los que dan los problemas.
En la mayora de las aplicaciones, los bits menos significativos no son importantes y es buena
una eleccin de m=2
e
=w.
3.3.4.- Eleccin del multiplicador e incremento
En esta seccin vamos a estudiar las propiedades de a y c para que su eleccin nos garantice la
obtencin de un periodo mximo, lo cual no implica que la serie obtenida sea aleatoria.
Si tomamos m de la forma m=P
1
P
2
....P
n
(siendo P
i
factor primo de m), slo se obtendr
periodo mximo con a=1, valor con el que quedaba demostrado que la serie obtenida no era aleatoria.
Se buscar un mdulo de la forma
r
k
r
k k
P P P m L
2 1
2 1
, lo cual nos permitir jugar con los valores
de a y c.
Teorema 1.
Para que un generador congruencial lineal mixto genere series con longitud de periodo
mximo m, se deble cumplir:
1) c y m sean primos relativos (c<m).
2) a sea mltiplo de los factores primos de m; a-1=k(P
1
P
2
....P
r
), siendo P
i
factor primo
de m.
3) Si m es mltiplo de 4, a-1 tambin debe serlo (si m=k4 a-1=k4).
Vamos a ver que son amplias las posibilidades de eleccin de a y c para que se cumpla el
teorema anterior.
Por la primera parte, se ha de cumplir que el mcd(c,m)=t1, luego dado un m se pueden tomar
como posibles valores de c:
1
1
) 1 ( ) (


i
e
i
n
i
i
P P m
Segn la segunda parte a-1 debe ser mltiplo de los factores primos de m. Si m=P
1
P
2

....P
n
, entonces debe ocurrir que a-1=k(P
1
P
2
....P
n
)=km, por otro lado sabemos que a<m:
1 0
1
1


< <
a k
km a
m a m a

Generacin de nmeros aleatorios

58
Vemos que tomar mdulos de esta forma no interesa. Por el mismo razonamiento no interesa
un mdulo de la forma m=P.
Por lo anterior nos vamos a centrar en mdulos de la forma
n m
k
r
k k
P P P P P m
r
L L
2 1
2 1
. Si esto es as, entonces debe cumplirse por la segunda
condicin del teorema ) ( 1
2 1 n m r
P P P P P k a L , por otro lado sabemos que a-1<m por
tanto:
n m
k
r
k k
n m r
P P P P P m P P P P P k a
r
< L L L
2 1
2 1 2 1
) ( 1
1 1
2
1
1
2 1

<
r
k
r
k k
P P P k L ;
El resultado anterior nos ofrece el rango de posibles valores para k y de ah se puede obtener el
nmero de posibles valores de a.
Si m=2
e
y e2 m=k*4, al ser mltiplo de 4 por la tercera condicin del teorema se
restringen las posibilidades de a y ahora slo sirven aquellos valores que garanticen que a-1=k*4.
Como a-1<m, a-1=k*4<2
e
k<2
e-2
, que son las posibles elecciones de k y por tanto de a.
Como se ha mencionado anteriormente el teorema garantiza que el periodo de la serie sea
mximo pero no que la serie obtenida sea aleatoria.
En el caso de un generador lineal multiplicativo (c=0), no se puede verificar la primera
condicin del teorema 1, por lo que la longitud de las series obtenidas nunca podr ser el mximo m.
El teorema siguiente nos dir qu valores elegir para este tipo de generadores.
Teorema 2.
En un generador congruencial multiplicativo se alcanza periodo mximo (m) si y slo si se
cumple:
1) x
0
y m son primos relativos (mcd(x
0
,m)=1)
2) a es raz primitiva mdulo m.
Demostracin del primer apartado:
Supongamos que no son primos relativos entonces
d k m d k x m d y x d que tal d ' ; / /
0 0

sustituyendo en la serie
d k k a d k d k a d k d k a x ) ' ( ' ) ' ( mod ) (
1

extendiendo esto a cualquier trmino de la serie, N n d k x
n


, por tanto los trminos
que vamos obteniendo son los mltiplos de d, el divisor de ambos. Por lo cual interesa que sean
primos relativos.
Generacin de nmeros aleatorios

59
Las posibilidades de eleccin de x
0
para que se cumpla la primera condicin del teorema son
1
1
) 1 ( ) (


i
e
i
n
i
i
P P m
Teorema 3.
Sea m=p
e
, a es raz primitiva mdulo m sii
1) si p=2 si:
e=1 a debe ser impar.
e=2 a mod 4 debe ser 3.
e=3 a mod 8 debe ser 3, 5 7.
e4 a mod 8 debe ser 3 5.
2) si p es impar si:

'



1 mod 1
mod 0
# 1
/ 1
p de primo divisor q con p a
p a
e
q p

'

>
2 1
mod 1
#
p a
e
p

3.4.- Otros mtodos
3.4.1.- Generadores Cogruenciales Cuadrticos
Son del tipo m c ax dx x
n n n
mod ) (
2
1
+ +
+
. La longitud de periodo mxima que se alcanza
con ellos es m, igual que en el caso del G.G.L mixto y sin embargo ha de realizar ms operaciones que
ste.
Teorema 4.
Para obtener longitud mxima de periodo (m) en un generador congruencial cuadrtico, se ha
de cumplir:
1) c y m deben ser primos relativos.
2) d y a-1 han de ser mltiplos de todos los factores primos impares de m. (Si m=2
e
a-
1=d=1).
3) Si:

'


par ser debe d
a d
k m
4 mod ) 1 (
4
Generacin de nmeros aleatorios

60

'


par ser debe d
a d
k m
2 mod ) 1 (
2
4) Si m=k9

'

'

9 mod 6
9 mod 1
9 mod 0
cd
a

d bien o


Se puede definir tambin el G.C.L. generalizado como
m x a x a x a x
k n k n n n
mod ) (
2 2 1 1
+ + + L .
La filosofa de dicho mtodo consiste en utilizar ms de un elemento de la sucesin para
generar un nuevo trmino.
3.4.2.- Mtodos Aditivos
Hasta ahora hemos visto generadores que producan nmeros en los que cada trmino depende
del anterior. Ahora vamos a ver otro tipo de generadores en los que para generar un nuevo trmino se
utilizan dos elementos anteriores.
En este caso la longitud mxima de periodo que se puede alcanzar es mayor, dado que para
que se produzca un ciclo es necesario que se repitan parejas de nmeros.
2
1 1
mx m periodo de ima longitud
x x
x x
k n n
k n n

+
+

El primer generador de este tipo fue creado en los aos 1950 y es la sucesin de Fibonacci:
m x x x
n n n
mod ) (
1 1
+
+

Ofrece una longitud de periodo mayor que m, pero los test han demostrado que los nmeros
producidos no son satisfactoriamente aleatorios.
Green introdujo el siguiente generador:
m x x x
k n n n
mod ) (
1 +
+
Demostr que para k15 dicho generador no pasaba bien los test de aleatoriedad pero que para
k16 s se portaba bien.
Mitchell y Moore (1958) introdujeron el siguiente generador:
55 ; mod ) (
55 24 1
+
+
n m x x x
n n n

Se ha de cumplir:
Generacin de nmeros aleatorios

61
m debe ser par.
Se han de generar de forma aleatoria 55 semillas, desde x
0
hasta x
54
, de forma que todos
ellas no sean pares.
Este mtodo tiene una longitud de periodo grande y al ser simplemente aditivo y no utilizar
multiplicadores, es rpido.
Son muchas las posibilidades para implementar este mtodo. Una de ellas utiliza un array con
55 elementos:
Para n=1 hasta 54 hacer
Y[n]x55-n
Fin_para
j24; k55
Mientras no fin
Y[k](Y[k]+Y[j]) mod 2e
Salida Y[k]
jj-1
kk-1
Si j=0
Entonces j55
Si k=0
Entonces k55
Fin_mientras

Este algoritmo utiliza el array como si tuviese forma circular, de este modo siempre se tienen
guardados los 55 valores que son necesarios para ir calculando los siguientes. Este es un generador
bastante bueno.
3.4.3.- Mtodos Mixtos
Estos mtodos generan series de nmeros aleatorios a partir de otras dos series:
m Y X Z
n n n
mod ) ( + .
Sea L
1
la longitud de periodo de la serie X
n
(Lp(X
n
)) y L
2
la longitud de periodo de la serie Y
n
,
si se cumple que mcd(L
1
, L
2
)=1 (Lp(Z
n
))= L
1
*L
2
.
Utilizando este mtodo el hecho de que se repita un nmero no implica que la serie empiece a
ciclar, tal y como ocurra con los G.C.L., ya que ahora interviene otro nmero de otra serie.
No es conveniente utilizar el mismo mtodo para generar las dos series de partida.
3.4.4.- Mtodos de Mezcla
Este tipo de mtodos intentan desorganizar los elementos de una serie generada, de forma que
se pueda eliminar la posible dependencia entre trminos.
Generacin de nmeros aleatorios

62
Vamos a ver dos de estos mtodos:
3.4.4.1.- Mezcla I
Fue introducido por Mclaren y Marsaglia. Este mtodo utiliza dos series de nmeros
aleatorios. La idea es utilizar un generador para permutar la salida producida por otro generador. De
esta forma se consigue enmascarar la dependencia funcional que existe entre un nmero y el siguiente
dentro de una serie generada. Dados dos mtodos (o series ya generadas) {X
n
} e {Y
n
} el mtodo
produce una sucesin ms aleatoria mediante permutaciones en la primera ocasionadas utilizando la
segunda (se obtienen los valores de la primera pero en un orden diferente).
Proceso:
Partimos de dos series {X
n
} e {Y
n
} y vamos a desordenar a primera con la ayuda de la
segunda.
El mdulo tomado para la generacin de las series no tiene por qu ser el mismo. Vamos a
suponer que el mdulo utilizado para la generacin de la primera es m y para la generacin de la
segunda es m, por lo que 0x
i
<m y 0y
i
<m i.
Tomamos los k primeros elementos de la primera serie (desde x
0
hasta x
k-1
) y los almacenamos
en un array. Ahora con un elemento de la segunda serie tendremos que seleccionar uno de los
elementos del array, para ello tomamos el elemento y
0
y obtenemos la posicin
1
]
1

'
0
m
ky
E j (se hace
esta transformacin dado que los elementos de la segunda serie estn en el intervalo [0, m-1] y las
posiciones del array van desde la 0 hasta la k-1). El valor almacenado en el array en dicha posicin j
va a ser el elemento de la nueva serie que vamos generando y el hueco dejado por l se sustituye con
el siguiente elemento no almacenado de la primera serie, el x
k
. El proceso se va repitiendo tomando
cada vez el siguiente elemento de la segunda serie para seleccionar posicin y rellenando sta con el
siguiente de la primera serie.
De esta forma se obtienen los elementos de la primera serie, pero reordenados con la ayuda de
la segunda con lo que se est dotando de ms independencia a los mismos.
Algoritmo:
Para j=0 hasta k-1 hacer
V[j]xj
Fin_para
i0; jk
Mientras no fin
Xxj ; Yyi
hEnt(k*Y/m) (m es el mdulo de {Yn} )
Salida V[h]
V[h]X
jj+1; ii+1
Fin_mientras

Generacin de nmeros aleatorios

63
En la mayora de las situaciones de inters, la sucesin resultante es ms aleatoria que la
original {X
n
}, y adems la longitud de periodo de la nueva serie es el mnimo comn mltiplo de las
longitudes de periodo de {X
n
} e {Y
n
}.
3.4.4.2.- Mezcla II
Fue introducido por Carter Bays y Durham. Es un mtodo parecido al anterior a diferencia de
que slo utiliza una serie de nmeros {X
n
}. Mejora la aleatoriedad de la serie original con un costo
muy pequeo.
Proceso:
En este caso partimos de slo de una serie {X
n
} y vamos a desordenarla utilizando los
elementos de la misma serie.
Vamos a suponer que el mdulo utilizado para la generacin de la serie es m por lo que
0x
i
<m i.
Tomamos los k primeros elementos de la serie (desde x
0
hasta x
k-1
) y los almacenamos en un
array. Ahora con el siguiente elemento no utilizado tendremos que seleccionar uno de los elementos
del array, para ello tomamos el elemento x
k
y obtenemos la posicin
1
]
1

m
kx
E j
k
(se hace esta
transformacin dado que los elementos de la serie estn en el intervalo [0, m-1] y las posiciones del
array van desde la 0 hasta la k-1). El valor almacenado en el array en dicha posicin j va a ser el
elemento de la nueva serie que vamos generando. El hueco dejado por l no lo rellenaremos con el
elemento utilizado para seleccionar la posicin dado que si as lo hicisemos elementos pequeos
seleccionaran posiciones bajas del array que se iran completando con dichos elementos y los
elementos grandes se iran a posiciones altas en el array, quedando por tanto el array ordenado en
cierta manera. Para evitar esto que quitara aleatoriedad a la serie que se est generando, lo que
hacemos es utilizar el elemento x
k+1
(no utilizado hasta el momento para rellenar el elemento dado
como salida) y en pasos siguientes se va utilizando el elemento dado como salida para seleccionar la
siguiente posicin en el array y el hueco dejado tras la salida se va completando con el siguiente
elemento no utilizado de la serie.
De esta forma se obtienen los elementos de la serie pero en desordenados, con lo que se est
dotando de mayor independencia a los mismos.
Algoritmo:
Para j=0 hasta k-1 hacer
V[j]xj
Fin_para
Yxk
Mientras no fin
hEnt(k*Y/m) (m es el mdulo de {Xn} )
YV[h]
Salida Y
Generacin de nmeros aleatorios

64
jj+1
V[h]xj
Fin_mientras
3.5.- Apndice. Teora de nmeros
1) Se dice que a es divisible por b si c tal que a=bc

b a (a es mltiplo de b)
b/a (b es divisor de a)
2) p es primo si slo es divisible por t1 y por tp.
3) Dados a, b Z
+
se llama mcd(a,b)=c (mximo comn divisor) tal que c/a y c/b y si d
Z
+
tal que d/a y d/b d/c.
4) Dados a, b Z
+
se llama mcm(a,b)=c (mnimo comn mltiplo) tal que a/c y b/c y si d
Z
+
tal que a/d y b/d c/d.
5) Dados a, b Z
+
se dicen que son primos relativos si mcd(a,b)=1.
6) Se define (m) (Phi de Euler) de m, como la funcin que nos dice el nmero de primos
relativos con m. (m)=m-1 para m primo.
7) Cualquier mZ
+
, se puede escribir como producto de potencias de nmeros primos:
primo P con P m
n
i
e
i
i
,
1


8) Dado cualquier m


n
i
e
i i
i
P P m
1
1
) 1 ( ) ( ,
9) a es congruente con b mdulo m (ab) si

m b a
10) Propiedades de los mdulos:
a) ((a mod m)+b) mod m=(a+b) mod m
b) (a (b mod m)) mod m=(ab) mod m
c) (a mod m) mod m= a mod m
d) ((a mod m)+(b mod m)) mod m= (a+b) mod m
e) Si d/m (a mod m) mod d= a mod d
Generacin de nmeros aleatorios

65
11) Llamamos orden de a mdulo m al menor Z
+
que hace cierto a

1modm. Se llama
orden de m ((m)) al mximo de los rdenes de los posibles as. Se dice que a es raz
primitiva mdulo m cuando su orden coincide con el orden de m.
12) Clculo de (m):
a) Si m=P
e
, con P primo impar (m)=(P-1)P
e-1

b) (2)=1, (4)=2 y (2
e
)=2
e-2
e 3
c) Si )) ( , ), ( ( ) (
1 2 1
1 2 1
r r
k
r
k k
r
k k
P P mcm m P P P m L L

También podría gustarte