Generación de Variables Aleatorias · Tema 16

Generación de Bernoulli

El átomo del azar discreto: 1 con prob. p con un umbral sobre U, varianza p(1−p) y base de binomial y geométrica.

01 · Punto de partida

Todo conteo empieza con un sí/no

¿El cliente compra? ¿La pieza falla? ¿El paquete llega? Cada pregunta binaria es una Bernoulli(p). Y cada binomial cuenta Bernoullis, cada geométrica espera la primera, cada thinning decide con una. Dominar su generación es dominar el ladrillo.

El método es el umbral del Tema 1, ahora con propiedades, varianza y tests que lo auditan en serio.

  • ¿Por qué 1 si U < p es exacto?
  • ¿Qué media y varianza debe reproducir la muestra?
  • ¿Cómo testear con N chico y con N grande?
  • ¿Qué errores sesgan p sin que se note a ojo?

02 · Definición

Masa, media y varianza del 0/1

P(X=1) = p, P(X=0) = 1−p. E[X] = p, E[X²] = p, Var(X) = p − p² = p(1−p), máxima en p = 0,5 (0,25) y nula en bordes.

①

Umbral exacto

P(U < p) = p por uniforme. Sin aproximación: la única fuente de error es Monte Carlo finito.

◐

Indicadora

Toda Bernoulli es 1_{evento}. Sumar indicadoras cuenta ocurrencias: ahí nace la binomial (Tema 19).

⚙

Un U por ensayo

O(1) y sin estado. Vectoriza perfecto: N uniformes ⇒ N ensayos independientes.

p manda en forma y dispersión.
pMediaVarianzaLectura
0,10,100,090Raros unos, poca varianza absoluta
0,50,500,250Máxima incertidumbre
0,90,900,090Casi siempre 1

03 · Anatomía

Umbral, bordes y vectorización

Comparación estricta o no
U < p vs U ≤ p difieren en prob. 0 (continuo). Fijar una y ser consistente; el borde U = p exacto mide 0.
p = 0 / p = 1 degeneradas
Devuelven constante sin gastar U. Útil en mezclas con ramas apagadas y en tests.
Vectorizar
Generar el vector U de tamaño N y comparar de una vez (NumPy/listas). Un bucle Python por ensayo es 50× más lento.
Reproducibilidad
Semilla fija ⇒ secuencia fija de unos/ceros. Guardar (p, N, semilla) reproduce el experimento bit a bit.

Umbral U < p

Exacto y auditable

La frecuencia tiende a p y la varianza a p(1−p). Dos momentos verifican el generador.

Atajos sesgados

Parecen binarios

round(U) solo da p = 0,5; int(U*10) % 2 discretiza mal bordes. Binario ≠ Bernoulli(p).

04 · Para qué sirve un 0/1 perfecto

El ladrillo de medio curso

Bernoulli→binomial · geométrica→thinning · dropout
  1. 1
    Binomial(n,p).

    Sumar n Bernoullis independientes. (Tema 19)

  2. 2
    Geométrica(p).

    Contar fracasos hasta el primer 1. (Tema 18)

  3. 3
    Thinning de Poisson.

    Quedarse con cada evento con prob. p: Poisson(λ) ⇒ Poisson(λp).

  4. 4
    Decisiones del simulador.

    Composición (elegir rama), aceptación (aceptar propuesta), dropout, fallas.

05 · Representación en Python

Ensayo, ráfaga y auditoría de dos momentos

Una función, un vector y dos asserts: media y varianza.

Python en tu navegador. Llevá p a 0,05 con N = 2000: la varianza ≈ 0,0475.

import random

random.seed(120)
p, N = 0.3, 8000

def bernoulli(p):
    return 1 if random.random() < p else 0

m = [bernoulli(p) 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:", p)
print("var:", round(var, 3), "teórica:", round(p * (1 - p), 3))
print("unos:", sum(m), "de", N)

Media ≈ 0,30 y var ≈ 0,21. Si la var da ≈ 0,25 con p = 0,3, estás generando p = 0,5 sin querer.

06 · Exploración

Laboratorio: media y varianza bajo control

Movete p y N. Las barras son frecuencias de 0/1; los rombos, la teoría. El panel compara varianza muestral vs p(1−p): con N grande calzan; con N chico bailan.

EXPERIMENTO 16

Bernoulli por umbral

X = 1 si U < p

Los resultados numéricos aparecen debajo.
Media muestral0,300
Teórica p0,300
Var. muestral0,210
Teórica p(1−p)0,210

Con p 0,3 y N 3000, media y varianza calzan.

Barra celeste X=0, naranja X=1, rombos teoría. Probá p = 0,5 (varianza máxima) y N = 100.

Preguntas para explorar

  1. Con p = 0,5, ¿qué varianza esperás? ¿Es la máxima?
  2. Con N = 100 y p = 0,1, ¿la barra del 1 se acerca a 0,1? ¿Y la varianza?
  3. Si p = 0,95, ¿por qué la varianza es igual que con p = 0,05?
Ver respuestas sugeridas
  1. 0,25, sí: p(1−p) se maximiza en 0,5.
  2. Aproximada con error ~√[0,09/100] ≈ 0,03 en media; la varianza fluctúa más.
  3. Por simetría p(1−p): 0,95·0,05 = 0,05·0,95.

07 · Comprensión

Confusiones frecuentes

«round(U) ya es Bernoulli»

Solo con p = 0,5. Para p general hay que comparar con p, no redondear.

«La media alcanza para validar»

Dos generadores con igual media pueden diferir en varianza (ej. mezcla). Validar ambos momentos.

«Con N = 50 la varianza debe calzar»

La varianza muestral tiene más ruido que la media. Con N chico, tolerancia amplia o N mayor.

«p chico no necesita N grande»

Al revés: con p = 0,01 necesitás ~10⁴ para ver ~100 unos. Eventos raros piden N enorme.

08 · Práctica guiada

Ejercicios con Python

Ejercicio 1: moneda sesgada auditada

Con p = 0,7 y N = 5000 (semilla 121), verificá media ≈ 0,7 y var ≈ 0,21.

import random

random.seed(121)
p, N = 0.7, 5000
m = [1 if random.random() < p else 0 for _ in range(N)]
media = sum(m) / N
print(round(media, 3), round(sum((x-media)**2 for x in m)/N, 3))
Ver solución razonada

≈ 0,70 y ≈ 0,21 (típicamente 0,69–0,71 y 0,20–0,22).

Ejercicio 2: evento raro

Con p = 0,02 y N = 20000 (semilla 122), ¿cuántos unos esperás? Contalos y compará.

import random

random.seed(122)
p, N = 0.02, 20000
m = [1 if random.random() < p else 0 for _ in range(N)]
print(sum(m), "vs", N * p)
Ver solución

Esperados 400, típico 360–440. Con N = 200 el intervalo sería 0–8: puro ruido.

Ejercicio 3: thinning que preserva Poisson

Generá 3000 Poisson(4) por suma de exponenciales o librería simple, quedate con cada evento con p = 0,5 y verificá media ≈ 2.

Ver una posible respuesta
import random
import math

random.seed(123)
lam, p, N = 4.0, 0.5, 3000

def poisson(lam):
    L, k, q = math.exp(-lam), 0, 1.0
    while True:
        q *= random.random()
        if q <= L:
            return k
        k += 1

adelgazada = [sum(1 if random.random() < p else 0 for _ in range(poisson(lam)))
              for _ in range(N)]
print(round(sum(adelgazada) / N, 3), "vs", lam * p)

Media ≈ 2,0. Cada evento sobrevive como Bernoulli(p): la composición de Poisson con thinning es Poisson(λp).

09 · Síntesis

Ideas para recordar

  • Bernoulli(p) = 1_{U<p}: exacta, 1 uniforme, media p.
  • Varianza p(1−p), máxima 0,25 en p = 0,5.
  • Validar media + varianza, no solo media.
  • Eventos raros exigen N enorme.
  • Es el ladrillo de binomial, geométrica y thinning.

En el próximo tema escalamos el 0/1 a enteros equiprobables: la uniforme discreta.