01 · Punto de partida
Finito por dentro, cíclico por fuera
En los Temas 4 y 7 viste el síntoma: con módulo 16 la secuencia se repetía calcada cada 16. No era casualidad de esos parámetros: es un teorema de cajón. Un generador guarda su estado en bits finitos (32, 64, 19937…); hay solo finitos estados posibles. Tarde o temprano un estado se repite, y desde ahí toda la historia futura se repite idéntica.
Ese largo del ciclo es el período p: la cantidad de valores antes de volver al inicio. Si tu simulación consume más valores que el período, estás reutilizando el mismo «azar» dos veces sin saberlo.
- ¿Qué es exactamente el período y qué no es?
- ¿Por qué el estado finito obliga al ciclo?
- ¿Cuánto más grande debe ser el período que tu N?
- ¿Cómo lo medís con código en un juguete y qué inferís en uno real?
02 · Definición
Ciclo, cola y período máximo
Período p
Largo del ciclo que se repite. En un LCG puro desde la semilla ya estás en el ciclo: todo lo que generes es el anillo rotando.
Período máximo
El techo teórico: m en un mixto bien elegido, m−1 en un multiplicativo (el cero no participa). Es el Tema 14.
N ≪ p
En la práctica se pide N miles o millones de veces menor que p. Con p = 2³¹ no simules miles de millones.
| Generador | Período típico | Qué N tolera |
|---|---|---|
| Juguete m = 16 | ≤ 16 | Demos de aula, nada más |
| LCG clásico m = 2³¹−1 | ≈ 2·10⁹ | Millones con cuidado |
| Mersenne Twister | 2¹⁹⁹³⁷−1 (enorme) | Casi cualquier N práctico |
Malo (4·x+2) mod 64 | ≤ 8 | Ni un histograma serio |
03 · Medición
Medir el ciclo sin perderse
- Diccionario de vistos
- Guardá
estado → índicehasta repetir: la distancia es el período. Solo viable conmchico (juguetes). - Distintos en N
- Si con N = 5000 solo hay 8 distintos, el período ≤ 8 sin más teoría. Es el olfato del Tema 7.
- Marca de repetición
- Graficá
u(n)y marcá dónde reaparecex₀: ahí cierra el primer ciclo. - Teoría, no fuerza bruta
- Con
m = 2³²no podés iterar el período: se demuestra con aritmética (Temas 13–14), no corriendo.
Uso sano
N aguja en pajar
Consumís una fracción minúscula del ciclo: nunca ves la repetición y los tests no la detectan.
Uso roto
N da vueltas al anillo
Das 3 vueltas al ciclo en una corrida: histogramas con picos calcados y correlación espuria.
04 · Ejemplos
El mismo N, tres destinos
- 1Juguete bueno, N = 48.
p = 16: 3 vueltas exactas. El gráfico se repite calcado 3 veces. - 2Malo, N = 48.
p = 4: 12 vueltas. Tu «azar» tiene 4 valores distintos. - 3Real, N = 10⁶.
Con
p ≈ 2·10⁹: 0,05 % del ciclo. Ni te enterás del anillo.
05 · Cómputo en Python
Detectar el período en un juguete
Con módulo chico podés ver el cierre del ciclo con tus ojos y generalizar la idea.
Python en tu navegador. Cambiá a los parámetros malos y mirá cómo el período se derrumba.
def periodo(semilla, a, c, m):
visto = {}
x = semilla
i = 0
while x not in visto:
visto[x] = i
x = (a * x + c) % m
i += 1
return i - visto[x]
print("bueno:", periodo(7, 5, 3, 16))
print("malo:", periodo(7, 4, 2, 16))
Bueno ≈ 16, malo ≤ 4. Esa sola línea decide si el generador sirve para algo más que un dibujo.
¿Cuántas vueltas das?
p, N = 16, 48
print("vueltas:", N / p)
print("fracción usada del ciclo real 2**31:", 10**6 / 2**31)
06 · Exploración
Laboratorio: vueltas al anillo
Elegí parámetros y N. La línea vertical marca el fin del primer período; si N lo supera, verás el dibujo repetirse. El panel informa p, vueltas y estados distintos.
El ciclo inevitable
N / p = vueltas
Con (5,3,16) y N=48 das 3 vueltas.
Pasada la marca vertical, todo es repetición calcada: el generador no tiene nada nuevo para darte.
Preguntas para explorar
- Con (5,3,16) y N = 16, ¿cuántas vueltas das? ¿Y con N = 48?
- Poné (4,2,16): ¿p? ¿Cuántas vueltas con N = 48? ¿Qué histograma saldría?
- Si tu simulación necesita 10⁶ valores, ¿qué p mínimo pedirías con criterio conservador?
Ver respuestas sugeridas
- 1 vuelta justa y 3 vueltas. Con 1 ya estás al límite; con 3 estás reciclando.
- p ≤ 4 y 12+ vueltas: histograma de 4 picos, inútil para uniformidad.
- Órdenes de magnitud por encima: miles de millones como piso (p ≫ N, ideal p > 1000·N).
07 · Comprensión
Confusiones frecuentes
«Período = m siempre»
Solo con parámetros que dan período completo (Tema 14). Con malos a, c, el período es una fracción ínfima de m.
«Cambio la semilla para alargar»
La semilla elige el punto de entrada, no el largo del anillo. El largo lo mandan a, c, m.
«Si N < p, todo bien»
Necesario pero no suficiente: estar dentro del ciclo no garantiza uniformidad ni independencia. Es piso, no techo.
«Con N chico ya medí el período»
Si N < p, nunca ves el cierre y subestimás. Para medir necesitás iterar hasta repetir o usar teoría.
08 · Práctica guiada
Ejercicios con Python
Ejercicio 1: bueno vs. malo
Medí p de ambos con m = 32. ¿Cuál llega a 32?
def periodo(semilla, a, c, m):
visto = {}
x = semilla
i = 0
while x not in visto:
visto[x] = i
x = (a * x + c) % m
i += 1
return i - visto[x]
print(periodo(3, 13, 7, 32))
print(periodo(3, 4, 2, 32))
Ver solución razonada
El primero da 32 (completo); el segundo colapsa a un dígito. Misma m, destinos opuestos: mandan a y c.
Ejercicio 2: vueltas
Si p = 8 y N = 200, ¿cuántas vueltas das? ¿Cuántos valores distintos como máximo verás?
p, N = 8, 200
print("vueltas:", N / p)
print("distintos <=", min(p, N))
Ver solución
25 vueltas y como máximo 8 distintos: tu histograma tendrá 8 picos aunque N sea 200 o 2 millones.
Ejercicio 3: regla de oro
Tu simulación consume 5·10⁶ valores. Con criterio p > 1000·N, ¿qué p exigirías? ¿Alcanza un LCG de 2³¹?
Ver una posible respuesta
N = 5_000_000
print("p exigido:", 1000 * N)
print("p LCG 2**31:", 2**31 - 1)
print("alcanza:", (2**31 - 1) > 1000 * N)
No alcanza con ese criterio estricto: pedirías 5·10⁹ y el LCG da ~2,1·10⁹. Moraleja: para N millonarios se migra a generadores modernos (Tema 17).
09 · Síntesis
Ideas para recordar
- Período = largo del ciclo que se repite; estado finito ⇒ ciclo inevitable.
- Máximo teórico m (mixto) o m−1 (multiplicativo); el real depende de a y c.
- Regla: N ≪ p; si N ≥ p, reciclás azar.
- Con m chico se mide por diccionario; con m real se demuestra por teoría.
- Período largo es piso, no garantía de calidad.
En el próximo tema viajaremos en el tiempo: la historia de los generadores pseudoaleatorios, de tablas y dados a Mersenne Twister.