01 · Punto de partida
El curso entero en una pregunta
“Necesito Poisson(200) diez millones de veces” / “Binomial(10, 0,5) cien veces” / “Normales para un VaR”. Tres pedidos, tres respuestas distintas —y todas están en los Temas 16–27. Este tema ordena ese arsenal en un árbol de decisión de tres ejes: precisión (¿exacto o aproximado?), velocidad (¿N chico o enorme?) y simplicidad (¿quién mantiene el código?).
La regla de oro anticipada: el método más simple que respete F con el costo que tu N permite.
- ¿Cuándo una aproximación es legítima y cuándo es bug?
- ¿Cómo pesan N, las colas y el hardware en la balanza?
- ¿Qué vale la simplicidad frente al récord de velocidad?
- ¿Cómo se documenta la decisión?
02 · Definición
Tres ejes, un orden
Precisión: exacto (igualdad en ley) vs aproximado (TCL, redondeos) — las colas y el riesgo vetan aproximaciones. Velocidad: setup + N·marginal con tu hardware (Tema 39). Simplicidad: líneas, dependencias y probabilidad de bug al releer.
Precisión filtra
Si las colas importan (VaR, riesgo, 3σ+), solo métodos exactos. La aproximación normal con λ = 5 no se discute: se descarta.
Velocidad ordena
Entre los exactos que pasan, gana el de menor total con tu N: suma con n = 10, tabla con n = 1000.
Simplicidad desempata
A igual precisión y costo similar, el código que se entiende en un minuto vale más que el 10 % más rápido que nadie toca.
| Caso | Método | Por qué |
|---|---|---|
| Bin(10; 0,5) ×100 | Suma Bernoulli | Exacta y trivial; el setup no se paga |
| Poisson(200) ×10⁷ | Rechazo/normal | Knuth gastaría ~201 U por muestra |
| N(0,1) para VaR | Box-Muller/polar | Colas exactas; suma-12 prohibida |
03 · Anatomía
Preguntas que deciden
- ¿Las colas importan?
- Sí (riesgo, extremos, 3σ+) ⇒ solo exactos: Box-Muller, inversión, Knuth con λ moderada. No ⇒ aproximaciones TCL y redondeos entran a la cancha.
- ¿Cuánto vale N?
- N ≤ 10³: simplicidad manda (sumas, bucles). N ≥ 10⁶: el setup se amortiza (alias, tablas, ziggurat) y cada U cuenta.
- ¿Discreta finita con N enorme?
- Alias (Temas 13–14): O(n) una vez, O(1) siempre. El caso de dados online y bootstrap masivo.
- ¿Sin modelo teórico?
- Empírica discreta (Tema 34) u histograma k ≈ Sturges (Tema 35): la precisión se juzga con KS contra los datos, no contra una F.
Decidir con árbol
Auditable y repetible
La elección queda documentada con sus supuestos: otro programador la puede revisar y refutar.
Elegir por costumbre
“Siempre usé este”
El método favorito fuera de su rango (Knuth con λ = 200, suma-12 para VaR) es deuda con intereses.
04 · Dónde se decide
Del pedido a la firma
- 1Simulación masiva.
Millones de réplicas: el marginal manda y el setup se vuelve invisible.
- 2Riesgo y colas.
La precisión veta primero: exactos con colas reales aunque cuesten más.
- 3Prototipos.
N chico y deadline: suma, bucles y librería directa, bien validados.
- 4Puente a la biblioteca.
Cada decisión documentada se vuelve un módulo del proyecto final. (Tema 41)
05 · Representación en Python
El árbol en código
Función que recomienda con las reglas del tema: colas vetan, N ordena, simplicidad desempata.
Python en tu navegador. Pedí Poisson(200) con colas: el árbol debe vetar a Knuth.
def recomendar(familia, par, N, colas=False):
if familia == "binomial":
n = par
if n <= 30:
return "suma Bernoulli (%d U)" % n
return "inversión por tabla (1 U, setup O(n))"
if familia == "poisson":
lam = par
if lam <= 20:
return "Knuth (%.0f U)" % (lam + 1)
if colas:
return "rechazo PTRS (exacto, O(1))"
return "normal N(λ,λ) (aprox, O(1))"
if familia == "normal":
if colas:
return "Box-Muller/polar (exacto, ~1 U)"
return "Box-Muller/polar (exacto, ~1 U)"
return "empírica/histograma (Temas 34-35)"
print(recomendar("binomial", 10, 100))
print(recomendar("poisson", 200, 10**7))
print(recomendar("poisson", 200, 10**7, colas=True))
print(recomendar("normal", 0, 10**6, colas=True))
Suma, normal-aprox, PTRS y Box-Muller: el árbol habla con los números del curso.
06 · Exploración
Laboratorio: el recomendador
Elegí familia, tamaño y si las colas importan: las barras comparan U por muestra de los candidatos y el panel firma el ganador con su razón. Jugá a contradecirlo con casos borde.
Recomendador
colas vetan · N ordena · simple desempata
Elegí un caso para ver la recomendación.
Barras logarítmicas de U/muestra; el verde es el recomendado. Probá Poisson sin colas.
Preguntas para explorar
- Con Binomial y N = 100, ¿gana la suma? ¿Por qué el setup la condena con N chico?
- Poisson λ = 200 con colas: ¿PTRS sobre normal? ¿Sin colas?
- Normal para VaR sin colas marcadas: ¿sigue ganando Box-Muller? ¿Por qué suma-12 nunca?
Ver respuestas sugeridas
- Sí: 50 U × 100 = 5000 U totales; la tabla pagaría setup O(50) para ahorrar poco.
- Con colas PTRS (exacto); sin colas la normal N(200,200) redondeada (la más barata).
- Sí: ~1 U contra 12 U con igual exactitud; suma-12 pierde siempre en costo y en colas.
07 · Comprensión
Confusiones frecuentes
«Aproximado vale si N es grande»
Al revés: con N grande el error de aproximación se vuelve detectable y sistemático. N grande exige exactitud, no la perdona.
«El más rápido siempre»
Solo entre los que pasan precisión y validación. El ranking de velocidad corre después del filtro, nunca antes.
«Setup despreciable siempre»
Con N = 100, un setup O(10⁴) domina el total. Amortizar exige N ≫ setup/marginal.
«Documentar es burocracia»
Sin (método, supuestos, tests) nadie puede refutar ni mantener la elección: es deuda, no velocidad.
08 · Práctica guiada
Ejercicios con Python
Ejercicio 1: dados online millonarios
U{1…6} con N = 10⁹ por día: ¿piso directo o alias? Justificá con setup y marginal.
N = 10**9
print("piso: setup 0, marginal 1 U → total", N)
print("alias: setup O(6), marginal 1 U + 1 int → total ~", N)
Ver solución razonada
Empate técnico: con n = 6 el piso 1+int(6U) ya es O(1) sin setup. Alias recién paga con n grande o pesos desiguales.
Ejercicio 2: reintentos con p = 0,001
Geométrica hasta el primer éxito, N = 10⁵: ¿bucle Bernoulli o inversión logarítmica?
p = 0.001
print("bucle U/muestra:", round(1/p), "vs inversión: 1")
Ver solución
Inversión: el bucle gastaría ~1000 U por muestra (10⁸ totales) contra 1. Con p = 0,5 el bucle sería honorable.
Ejercicio 3: VaR que no admite atajos
N(0,1) para percentil 99 %, N = 10⁶: descartá suma-12 y elegí entre Box-Muller y polar con argumento de colas + costo.
Ver una posible respuesta
print("suma-12: 12 U, cola truncada en ±6 → vetada por colas")
print("Box-Muller: 1 U, exacta → candidata")
print("polar: ~1.27 U, exacta, sin trigonometría → candidata")
Ambas exactas pasan; decide el cronómetro en tu hardware (Tema 39) y la simplicidad de tu base.
09 · Síntesis
Ideas para recordar
- Colas vetan, N ordena, simplicidad desempata.
- N chico ⇒ simple; N enorme ⇒ setup amortizado.
- Aproximar solo sin colas en juego.
- Todo cambio revalida la batería (Tema 38).
- Decisión documentada = módulo de biblioteca.
En el próximo tema la obra completa: biblioteca de generación en Python.