3.- Generación de números aleatorios
3.- Generación de números aleatorios
3.- Generación de números aleatorios
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
x = x + c)<br />
mod m<br />
1<br />
( 0<br />
x = x + c)<br />
mod m = (( x + c)<br />
mod m)<br />
mod m = ( x + 2c)<br />
mod m<br />
2<br />
( 1<br />
0<br />
0<br />
x = x + 3c)<br />
mod<br />
3<br />
( 0<br />
m<br />
<strong>Generación</strong> <strong>de</strong> <strong>números</strong> <strong>aleatorios</strong><br />
y así para todos los términos. Vamos obteniendo que un término es siempre la semilla más un múltiplo<br />
<strong>de</strong> c y todo módulo m, y esta serie no es aleatoria.<br />
Pue<strong>de</strong> interesarnos dotar <strong>de</strong> más in<strong>de</strong>pen<strong>de</strong>ncia a los valores obtenidos. Esto lo po<strong>de</strong>mos<br />
conseguir no obteniendo todos los valores consecutivos <strong>de</strong> una serie sino obteniendo valores <strong>de</strong> k en k<br />
posiciones, es <strong>de</strong>cir a partir <strong>de</strong> un elemento xn no obtenemos el elemento xn+1 sino el elemento xn+k.<br />
Para ello tendremos que elegir:<br />
x0 ’ =x0<br />
a ’ =a k<br />
k<br />
a −1<br />
c'=<br />
c<br />
a −1<br />
m’=m<br />
Demostración: tenemos que xn + 1 = ( ax n + c)<br />
mod m , obteniendo nuevos<br />
2<br />
términos: ( ax + c)<br />
mod m = (( a(<br />
ax + c)<br />
mod m)<br />
+ c)<br />
mod m = ( a x + ac + c)<br />
mod m<br />
x<br />
n+<br />
3<br />
= ( a<br />
= ( axn+<br />
3<br />
x<br />
n<br />
xn+ 2 = n+<br />
1<br />
n<br />
n<br />
+ a<br />
En general<br />
2<br />
2<br />
+ c)<br />
mod m = (( a(<br />
a(<br />
ax + c)<br />
mod m)<br />
+ c)<br />
mod m)<br />
+ c)<br />
mod m =<br />
x<br />
n<br />
+ ac + c)<br />
mod m<br />
n<br />
k<br />
k k−1<br />
k−<br />
2<br />
k a − 1<br />
xn+<br />
k = ( a xn<br />
+ a c + a c + L + ac + c)<br />
mod m , operando queda: xn<br />
+ k = ( a xn<br />
+ c)<br />
mod m ,<br />
a − 1<br />
Esto también se pue<strong>de</strong> utilizar para paralelizar la obtención <strong>de</strong> los términos. Si tenemos un<br />
or<strong>de</strong>nador con procesamiento paralelo, po<strong>de</strong>mos, partiendo <strong>de</strong> la semilla asignar a cada procesador la<br />
generación <strong>de</strong> una subsecuencia <strong>de</strong> términos. Por ejemplo con tres procesadores se irían generando los<br />
términos <strong>de</strong> la siguiente forma:<br />
x 0<br />
x 1 x 2 x 3<br />
x 4 x 5 x 6<br />
.........................<br />
55