01 · Punto de partida
Qué número le ponemos al «puede pasar»
La probabilidad es un número entre 0 y 1 que mide la chance de un evento. En simulación tiene dos usos: diseñar (le digo al modelo con qué probabilidad llega un cliente) y medir (cuento en cuántas réplicas hubo quiebre).
Cuando el modelo es chico, la calculamos con lápiz (Laplace: casos favorables sobre posibles). Cuando es grande —colas, redes, inventarios con reglas—, la estimamos simulando: repetimos N veces y la frecuencia es la estimación. Ese es el método Monte Carlo que usarás todo el curso.
- ¿La probabilidad viene de un cálculo o de muchas réplicas?
- ¿Qué reglas no se pueden romper (complemento, suma, cotas)?
- ¿Con qué N la estimación ya es confiable?
- ¿Cómo convierto una frecuencia en una decisión (stock, personal, precio)?
02 · Definición
Tres formas de asignar probabilidad
Clásica (Laplace)
Casos favorables sobre posibles, todos equiprobables: P(6) = 1/6. Sirve para dados, monedas y sorteos programados.
Frecuencial
Límite de la frecuencia con N grande. Es la que estima tu simulador: P̂ = éxitos / N.
Subjetiva / datos
Juicio experto o datos históricos cuando no hay simetría: «el 30 % de los visitantes compra». Se calibra con datos (temas 27 a 34).
| Situación | Enfoque | Ejemplo |
|---|---|---|
| Sorteo programado | Clásica | Dado, ruleta uniforme del juego |
| Sistema con reglas | Monte Carlo | P(quiebre), P(espera mayor a 10) |
| Comportamiento real | Datos | Tasa de compra medida en la web |
| Verificación | Clásica vs Monte Carlo | Ambas deben coincidir en el caso chico |
03 · Reglas que siempre valen
El kit mínimo para no romper el modelo
Combinar eventos
Suma y complemento
P(A ∪ B) = P(A) + P(B) − P(A ∩ B). Si son excluyentes, el último término es 0. El complemento ahorra cuentas: P(A) = 1 − P(Aᶜ).
Estimar simulando
Monte Carlo
P̂(A) = éxitos / N. Más N, menos error. El error típico cae como 1/√N: cuadruplicar N reduce el error a la mitad.
- Axiomas
- Probabilidades entre 0 y 1, suman 1 sobre Ω. Todo lo demás se deduce de ahí.
- Regla de la suma
- Para «A o B», sumar y restar el solapamiento. Base de «convirtió de alguna forma».
- Monotonía
- Si A ⊆ B, entonces P(A) ≤ P(B). Exigir más nunca da más chance.
- Monte Carlo
- Estimar contando réplicas. Verificar comparando con el cálculo exacto en un caso simplificado.
04 · Ejemplos
Dónde aparece en cada simulador
- 1Quiebre.
P(stock menor a 0 en 12 días). No se calcula a mano: se estima con réplicas.
- 2Espera.
P(espera mayor a 10 min). Define cuántos cajeros contratar.
- 3Conversión.
P(compra o suscripción) = P(C) + P(S) − P(ambas). Suma con solapamiento.
- 4Disponibilidad.
P(responde en menos de 2 s) = 1 − P(lento). Complemento directo.
- 5Juego.
P(ganar el combate) estimada con 10000 peleas simuladas antes de publicar el balance.
05 · Representación en Python
Calcular y estimar, lado a lado
La verificación de oro: el cálculo exacto y la estimación Monte Carlo deben coincidir. Si difieren, el bug está en el simulador:
Python en tu navegador. Subí N a 20000 y mirá cómo la estimación se pega al cálculo.
import random
random.seed(5)
# Exacto: P(demanda U(6,14) mayor a 10) = (14-10)/(14-6)
exacta = (14 - 10) / (14 - 6)
# Monte Carlo: contar réplicas
N = 5000
exitos = sum(1 for _ in range(N) if random.uniform(6, 14) > 10)
print("exacta:", round(exacta, 4))
print("estimada:", round(exitos / N, 4))
Consejo: probá con N = 100, 1000 y 20000 para sentir la caída del error como 1/√N.
Regla de la suma en código
import random
random.seed(7)
# A = par, B = mayor a 4, con un dado, N = 6000
N = 6000
A = B = inter = union = 0
for _ in range(N):
d = random.randint(1, 6)
a, b = (d % 2 == 0), (d > 4)
A += a; B += b; inter += (a and b); union += (a or b)
print("P(A∪B) directa:", round(union / N, 3))
print("P(A)+P(B)-P(∩):", round((A + B - inter) / N, 3))
06 · Exploración
Laboratorio: estimar P(demanda mayor a T)
Demanda diaria uniforme U(6, 14). Elegí el umbral T: la línea blanca es la probabilidad exacta (14−T)/8; las 3 curvas son frecuencias acumuladas Monte Carlo. Achicá N para ver el error, agrandalo para ver la convergencia.
Monte Carlo vs cálculo
P̂(T) = #{demanda > T} / n → (14−T)/8
Con N grande, la estimación se pega a la exacta.
Cada curva es la frecuencia acumulada de «demanda mayor a T». La línea blanca punteada es el valor exacto. El error cae al aumentar N, pero cada vez más lento (1/√N).
Preguntas para explorar
- Con T = 10 y N = 50, ¿qué error típico ves? ¿Y con N = 2000?
- Poné T = 13,5. ¿Por qué la estimación salta más en términos relativos?
- Si cuadruplicás N, ¿cuánto se achica el error a ojo?
Ver respuestas sugeridas
- Con 50 el error ronda centésimas altas (±0,07); con 2000 cae a ±0,01.
- La probabilidad es chica (0,0625): pocos éxitos, más variación relativa. Los eventos raros exigen N mayor.
- A la mitad: firma del 1/√N. Pasar de 200 a 800 recorta el error a la mitad, no a la cuarta parte.
07 · Comprensión
Confusiones frecuentes
«Estimado es lo mismo que exacto»
No: la estimación tiene error. Informá N y, cuando puedas, el intervalo (tema 33). Sin N, el número no dice nada.
«Más N siempre vale la pena»
El error cae lento (1/√N). De 1000 a 4000 ganás la mitad de error al cuádruple de costo: hay un punto donde conviene mejorar el modelo, no N.
«Si la simulación da distinto al cálculo, ajusto la teoría»
Al revés: en el caso chico la teoría manda. Si difieren, depurá el simulador (semilla, rangos, condición de éxito).
«Probabilidad 0 significa imposible»
En modelos continuos, un valor puntual tiene probabilidad 0 y sin embargo ocurre. Lo que tiene probabilidad es el intervalo o evento.
08 · Práctica guiada
Ejercicios con Python
Ejercicio 1: verificar el laboratorio
Estimá P(U(6,14) mayor a 12) con N = 2000 y compará con (14−12)/8 = 0,25.
import random
random.seed(15)
N = 2000
ex = sum(1 for _ in range(N) if random.uniform(6, 14) > 12)
print("estimada:", round(ex / N, 4), "| exacta: 0.25")
Ver solución razonada
La estimación cae entre 0,23 y 0,27. Si te da lejos, revisá el umbral (estricto mayor a) y el rango (14−6 = 8).
Ejercicio 2: evento raro
Estimá P(suma 12 con dos dados) = 1/36 con N = 500 y N = 20000. ¿Qué cambia?
import random
def estimar(N, semilla):
random.seed(semilla)
ex = sum(1 for _ in range(N) if random.randint(1, 6) + random.randint(1, 6) == 12)
return ex / N
print("N=500:", round(estimar(500, 2), 4))
print("N=20000:", round(estimar(20000, 2), 4))
print("exacta:", round(1/36, 4))
Ver solución
Con 500 la estimación salta (0,01 a 0,05); con 20000 se pega a 0,0278. Los eventos raros piden N grande: regla práctica para quiebres y fallas.
Ejercicio 3: de frecuencia a decisión
Con stock 110, 12 días U(6,14) y 3000 réplicas, estimá P(quiebre). ¿Conviene subir a 130 si el costo de quiebre es alto?
Ver una posible respuesta
import random
random.seed(30)
def p_quiebre(stock, N=3000):
q = 0
for _ in range(N):
s = stock
for _ in range(12):
s -= random.uniform(6, 14)
if s < 0:
q += 1
break
return q / N
print("P(quiebre|110):", round(p_quiebre(110), 3))
print("P(quiebre|130):", round(p_quiebre(130), 3))
Pasa de ~0,65 a ~0,2: el número convierte «me quedo corto» en decisión de stock. Así se usa la probabilidad en simulación: para comparar escenarios (tema 43).
09 · Síntesis
Ideas para recordar
- La probabilidad se calcula (Laplace) o se estima (Monte Carlo); en casos chicos deben coincidir.
- Las reglas de complemento y suma evitan contar dos veces.
- La estimación es éxitos / N y su error cae como 1/√N.
- Informá siempre N junto a la probabilidad estimada.
- Toda decisión del simulador nace de una probabilidad: quiebre, espera, conversión.
En el próximo tema condicionaremos: probabilidad condicional para actualizar la chance cuando sabemos algo más.