01 · Punto de partida
Cuánto falta para lo próximo
¿Cuánto hasta la próxima llamada, la próxima falla, el próximo cliente? Si los eventos llegan con tasa λ y sin agenda, la espera es Exp(λ): la única continua sin memoria.
Es la primera inversa continua no lineal del curso y el reloj del proceso de Poisson del Tema 20: contar eventos o medir esperas son dos caras del mismo λ.
- ¿Por qué −ln(1−U)/λ es exacto?
- ¿Qué significa “sin memoria” en una espera simulada?
- ¿Qué media y varianza debe reproducir la muestra?
- ¿Qué rompe la fórmula en flotante?
02 · Definición
Densidad que cae y cola sin memoria
Soporte [0,∞). F(x) = 1 − e^(−λx), P(X > x) = e^(−λx). E[X] = 1/λ, Var(X) = 1/λ², mediana ln 2/λ. Falta de memoria: P(X > s+t | X > s) = P(X > t).
Inversa exacta
Despejar 1 − e^(−λx) = u da x = −ln(1−u)/λ. Un U, un log: O(1) sin rechazo.
Sin memoria
Lo ya esperado no descuenta: la cola condicional es igual a la original. En código, el reloj se reinicia solo.
Tasa y escala
λ es tasa (eventos por unidad); 1/λ es escala (espera media). Duplicar λ parte la espera a la mitad.
| Caso | Media 1/λ | Varianza | P(X > media) |
|---|---|---|---|
| Exp(0,5) | 2,00 | 4,00 | e^(−1) ≈ 0,368 |
| Exp(1) | 1,00 | 1,00 | ≈ 0,368 |
| Exp(2) | 0,50 | 0,25 | ≈ 0,368 |
03 · Anatomía
Fórmula, bordes y estabilidad
- Inversión O(1)
- Un uniforme y un logaritmo por muestra. Precomputar 1/λ fuera del bucle si λ es fijo.
- 1−U vs U
- En distribución, −ln(U)/λ y −ln(1−U)/λ son iguales; numéricamente conviene
-log1p(-u)o-log(u)con u ∈ (0,1] para no perder precisión con u ≈ 1. - Bordes U = 0 / U = 1
- U = 0 da x = 0 (válido); U = 1 da −ln(0) = ∞. Si el generador base puede devolver 1,0 exacto, clampear a
1 − 1e−12o rechazarlo. - Sumas que escalan
- Sumar k exponenciales iid da Erlang(k,λ), antesala de la gamma (Tema 26). Con λ chica la cola se alarga: graficar truncado + cola “≥K”.
Inversión logarítmica
Exacta y barata
La opción por defecto: un U por muestra, sin tablas ni rechazo, válida para todo λ > 0.
Atajos aproximados
Sesgan la cola
Truncar, discretizar o usar 1/λ · U aplana la caída exponencial. La cola delata el truco con N grande.
04 · Dónde espera la exponencial
Del reloj al sistema
- 1Colas y llegadas.
Interarribos y servicios con tasa λ: el motor del simulador de colas.
- 2Confiabilidad.
Vida útil con tasa de falla constante: P(sobrevivir > t) = e^(−λt).
- 3Puente a Poisson.
Contar cuántas Exp(λ) entran en [0,1] da Poisson(λ). Reloj y conteo unidos. (Tema 20)
- 4Puente a gamma.
Sumar k exponenciales da Erlang; con forma no entera, gamma. (Tema 26)
05 · Representación en Python
Inversa y auditoría de dos momentos
Una función, un vector y dos asserts: media 1/λ y varianza 1/λ², más la cola P(X > media) ≈ 0,368.
Python en tu navegador. Llevá λ a 2: la media debe caer a 0,5.
import random
import math
random.seed(180)
lam, N = 0.5, 8000
inv_lam = 1.0 / lam
def exponencial(lam):
return -math.log(1 - random.random()) / lam
m = [exponencial(lam) for _ in range(N)]
media = sum(m) / N
var = sum((x - media) ** 2 for x in m) / N
print("media:", round(media, 3), "teórica:", inv_lam)
print("var:", round(var, 3), "teórica:", round(inv_lam ** 2, 3))
print("P(X > media):", round(sum(1 for x in m if x > inv_lam) / N, 3), "vs 0.368")
Media ≈ 2,0, var ≈ 4,0 y cola ≈ 0,368. Si la cola da ≈ 0,5, estás generando uniforme, no exponencial.
06 · Exploración
Laboratorio: caída que escala con λ
Movete λ con N fijo. El histograma usa 20 bines hasta el cuantil 99,5 % (cola ≥ resto aparte); los rombos son la probabilidad teórica por bin. Con λ chica la cola se estira; con λ grande se comprime.
Exponencial por inversión
X = −ln(1 − U) / λ
Con λ 0,5 y N 6000, media 2,0 y var 4,0.
20 bines hasta el cuantil 99,5 % más cola. Probá λ = 0,2 (cola larguísima) y λ = 3 (caída rápida).
Preguntas para explorar
- Con λ = 0,5, ¿media y varianza teóricas? Leelas en el panel.
- Duplicá λ a 1,0. ¿La media se parte a la mitad? ¿Y la varianza a la cuarta parte?
- Con λ = 0,2 y N = 500, ¿la cola se estima bien? ¿Por qué necesita N grande?
Ver respuestas sugeridas
- Media 2,0 y varianza 4,0.
- Sí: 1/λ pasa de 2 a 1 y 1/λ² de 4 a 1. Escalar λ comprime toda la distribución.
- No: la cola e^(−λx) con λ chica llega lejos y cada bin lejano tiene pocos puntos; solo N grande la llena.
07 · Comprensión
Confusiones frecuentes
«Exponencial de media λ»
La media es 1/λ, no λ. Parametrizar al revés invierte todas las esperas: con λ = 0,5 la media es 2, no 0,5.
«U y 1−U dan distinta calidad»
En distribución son idénticas; solo cambia la estabilidad numérica cerca de 1. La calidad la da el generador base.
«Sin memoria significa sin historia del sistema»
Solo de esa espera: P(X>s+t|X>s) = P(X>t). El sistema (cola, stock) sí acumula historia.
«Con N = 200 la varianza debe calzar»
La exponencial tiene cola pesada: la varianza muestral fluctúa mucho con N chico. Validar con miles.
08 · Práctica guiada
Ejercicios con Python
Ejercicio 1: call center con λ = 2
λ = 2 por minuto, N = 8000 (semilla 181): estimá media (≈ 0,5), varianza (≈ 0,25) y P(X > 1) (≈ e^(−2) ≈ 0,135).
import random
import math
random.seed(181)
lam, N = 2.0, 8000
m = [-math.log(1 - random.random()) / lam for _ in range(N)]
media = sum(m) / N
print(round(media, 3), "vs 0.5")
print(round(sum((x-media)**2 for x in m)/N, 3), "vs 0.25")
print(round(sum(1 for x in m if x > 1) / N, 3), "vs", round(math.exp(-2), 3))
Ver solución razonada
≈ 0,5, ≈ 0,25 y ≈ 0,135 (típicamente 0,12–0,15). Si la media da ≈ 2, invertiste λ con 1/λ.
Ejercicio 2: falta de memoria en código
Con λ = 1 y N = 10000, verificá que P(X > 3 | X > 1) ≈ P(X > 2) ≈ e^(−2).
import random
import math
random.seed(182)
lam, N = 1.0, 10000
m = [-math.log(1 - random.random()) / lam for _ in range(N)]
cond = [x for x in m if x > 1]
print(round(sum(1 for x in cond if x > 3) / len(cond), 3), "vs", round(math.exp(-2), 3))
Ver solución
Ambos ≈ 0,135. Lo ya esperado (1) no descuenta: la cola desde 1 se comporta como nueva.
Ejercicio 3: de exponenciales a Poisson
Con λ = 3, sumá interarribos hasta superar 1 y contá eventos: debe dar Poisson(3) con media ≈ 3.
Ver una posible respuesta
import random
import math
random.seed(183)
lam, N = 3.0, 3000
conteos = []
for _ in range(N):
t, k = 0.0, 0
while True:
t += -math.log(1 - random.random()) / lam
if t > 1.0:
conteos.append(k)
break
k += 1
print(round(sum(conteos) / N, 3), "vs 3.0")
Media ≈ 3,0. Es el puente Exp ↔ Poisson: reloj y conteo con el mismo λ.
09 · Síntesis
Ideas para recordar
- Exp(λ) = −ln(1−U)/λ: inversión exacta O(1).
- Media 1/λ, varianza 1/λ², cola P(X>x) = e^(−λx).
- Única continua sin memoria, como la geométrica discreta.
- Cuidar U = 1 (log de 0) y usar log1p cerca del borde.
- Reloj de Poisson y ladrillo de Erlang/gamma.
En el próximo tema apilamos simetría: la normal, campana central de la simulación.