siguiente nivel superior anterior contenidos
Siguiente: Otros métodos de generación de vv.aa. Nivel anterior: Métodos de generación de vv.aa. Previa: Introducción

Métodos congruenciales

Se define el siguiente método congruencial: Se genera

\begin{displaymath}X_i = aX_{i-1} + c ( M )\end{displaymath}

a partir de una semilla X0, con

\begin{displaymath}a \in \mathbb{Z} ,\quad 1\leq a \leq M,\quad X_0 \in
\mathbb{Z} ,\quad 0\leq X_0 \leq M-1\end{displaymath}


\begin{displaymath}c \in \mathbb{Z} ,\quad 0\leq c \leq M,\quad M \in \mathbb{Z} .\end{displaymath}

Entonces se toma

\begin{displaymath}u_i=\frac{X_i}{M} \in [0,1).\end{displaymath}


Ejemplo: M=1000, a=7, c=501, X0=0.

$X_1= (7 \cdot 0 + 501) ( 1000 ) = 501$.

$X_2= (7 \cdot 501 + 501) ( 1000 ) = 8$.

Y así sucesivamente. Si Xi=Xi+k por vez primera, entonces k se denomina período del generador. Si c=0 el método se dice multiplicativo. A continuación, enunciamos dos resultados relacionados con congruencias cuya demostración se omite. Condición necesaria para que un generador multiplicativo tenga un período de longitud M-1 es que M sea primo. Si M es primo, el período divide a M-1. En este caso, el período es M-1 si, y sólo si,

\begin{displaymath}a^{\frac{M-1}{p}}\not \equiv 1 (M) \text{ para ningún factor primo $p$ de } M-1.\end{displaymath}

Sea $a\neq 0$. Un generador congruencial tiene período M si, y sólo si, se cumplen las tres condiciones siguientes:
1.
mcd(c,M)=1.
2.
$a \equiv 1 (p) \ \forall p$ factor primo de M.
3.
$a \equiv 1 (4) $ si M es múltiplo de 4.
A continuación se presenta el generador implementado en los IBM380 en 1970. Este método resultó tener un gran problema: hay quince planos paralelos en el cubo [0,1]3 que contienen todos los puntos que se obtienen tomando tres valores Xi, Xi+1, Xi+2 cualesquiera.

Ejemplo: c=0, a=216+3, M=231 Los ci que se utilizan a continuación representan enteros. Su valor exacto se omite pues no tiene interés.

Xi+1=(216+3) Xi + 231 c0


\begin{displaymath}X_{i+2}=(2^{16}+3) X_{i+1} + 2^{31} c_1 = (2^{16}+3)^2 X_i +
2^{31} c_3 = (6\cdot 2^{16} + 9)X_i + 2^{31} c_4 = \end{displaymath}


=(6 (216+3)-9) Xi + 231 c4 = 6 (216+3)Xi - 9 Xi + 231 c4 = 6 Xi+1 -9 Xi + 231 c5

Así

\begin{displaymath}u_{i+2} - 6 u_{i+1} + 9 u_i = c_5 \in \mathbb{Z} .\end{displaymath}

Como ui, ui+1, $u_{i+2} \in [0,1)$ y $c_5 \in \mathbb{Z} $, enonces $c_5 \in \{-5,-4,\dots,8,9\}$. Es decir, todas las ternas (ui,ui+1,ui+2) están concentradas en quince planos.

Un generador recomendado es

\begin{displaymath}X_{i+1} = (69069X_i + 1) \equiv 2^{32}.\end{displaymath}