Generación de Variables Aleatorias · Tema 03

Generación de variables continuas

Densidades, acumuladas lisas y la transformación base X = a + (b−a)·U, antesala de la inversa general X = F⁻¹(U).

01 · Punto de partida

Del escalón a la curva lisa

En el Tema 2 partimos [0,1) en intervalos y devolvimos etiquetas discretas. Ahora el objetivo es continuo: tiempos de espera, longitudes, temperaturas, latencias. Ya no hay “escalones” de probabilidad sino una densidad f(x) cuya área da probabilidad.

La buena noticia: el esquema U → g → X sigue intacto. La diferencia es que g ahora deforma el uniforme de forma lisa en vez de clasificarlo en cajas. El caso más simple —escalar U a cualquier intervalo— ya contiene todas las ideas.

  • ¿Qué cambia al pasar de masa P(X = k) a densidad f(x)?
  • ¿Por qué P(X = valor exacto) = 0 en el continuo?
  • ¿Cómo se escala U(0,1) a U(a,b) sin sesgar bordes?
  • ¿Qué adelanta este caso sobre la inversa general?

02 · Definición

Densidad, acumulada y probabilidad como área

Una continua se define por f(x) ≥ 0 con área total 1 y por su acumulada F(x) = ∫₋∞ˣ f(t) dt, ahora lisa y creciente. Entonces:

◠

Densidad f

Altura cuya área es probabilidad. Puede superar 1 (ej. U(0 · 0,5) tiene f = 2): lo que suma 1 es el área, no la altura.

⎍

Acumulada F

Sube de 0 a 1 sin saltos. Su pendiente es f. Si F es invertible, X = F⁻¹(U) es el generador exacto (Temas 4–5).

⇝

Transformación

Toda g monótona deforma densidades por cambio de variable. Escalar y desplazar son los casos lineales; −ln(1−U)/λ es el no lineal canónico.

Consecuencia clave: P(X = 3,14159…) = 0. Solo los intervalos tienen probabilidad. Por eso un histograma con N grande debe parecerse a f, pero ningún valor exacto se repite (salvo redondeo).

Discreta frente a continua: el mismo U, distinta g.
AspectoDiscreta (Tema 2)Continua (este tema)
DescriptorMasa pk, suma 1Densidad f(x), área 1
AcumuladaEscalonadaLisa creciente 0 → 1
Método baseBuscar k con Fk ≥ UDeformar: X = g(U)
EjemploDado cargadoU(a,b), exponencial

03 · Anatomía

El caso canónico: escalar el uniforme

Si U ~ U(0,1), entonces X = a + (b − a)·U ~ U(a,b). Estira el intervalo [0,1) a [a,b) sin cambiar la “planicie”: la densidad pasa de 1 a 1/(b−a).

Escala y desplazamiento
Multiplicar por (b − a) fija el largo; sumar a fija el origen. El orden importa: primero escala, después desplaza.
Densidad resultante
f(x) = 1/(b − a) en [a,b), 0 fuera. Media (a+b)/2, varianza (b−a)²/12.
Bordes
U ∈ [0,1) produce X ∈ [a,b). El extremo b nunca sale exacto: es correcto, mide 0 de probabilidad.
Puente a la inversa
Esta fórmula ya es X = F⁻¹(U) para la uniforme, pues F(x) = (x−a)/(b−a). La exponencial y otras son el mismo patrón no lineal.

Escalado correcto

Conserva planicie

a + (b-a)*U reparte N puntos uniformemente. El histograma es plano y la media tiende a (a+b)/2.

Atajo sesgado

Deforma sin querer

Elevar al cuadrado, redondear o tomar módulo “porque da números en rango” crea picos y valles: ya es otra distribución.

04 · A dónde lleva

De la recta al catálogo continuo

U ~ U(0,1)→g lineal / no lineal→X ~ F continua
  1. 1
    Uniforme continua U(a,b).

    Base de todo lo continuo. Se usa para jitter, perturbaciones y como propuesta de rechazo. (Tema 21)

  2. 2
    Exponencial(λ).

    X = −ln(1−U)/λ. Tiempos entre eventos, primer caso de inversa no lineal. (Tema 22)

  3. 3
    Normal, gamma y otras.

    Sin inversa elemental: Box-Muller, polar, sumas y rechazo. (Temas 23–27)

  4. 4
    Validación continua.

    Histograma + densidad teórica superpuesta, CDF empírica y Kolmogorov-Smirnov. (Temas 36–38)

05 · Representación en Python

Escalar, exponenciar, mirar el histograma

Tres líneas bastan para la uniforme continua. La exponencial anticipa la inversa general del Tema 5.

Python en tu navegador. Cambiá a, b y λ y compará la media muestral con la teórica.

import random
import math

random.seed(6)
a, b, N = 2.0, 5.0, 5000

def uniforme_continua(a, b):
    return a + (b - a) * random.random()

muestra = [uniforme_continua(a, b) for _ in range(N)]
media = sum(muestra) / N
print("media muestral:", round(media, 3))
print("media teórica:", (a + b) / 2)

Debe dar ≈ 3,5. Si achicás N a 50, el ruido crece: la media salta lejos de 3,5.

Adelanto: la exponencial con un logaritmo

import random
import math

random.seed(6)
lam, N = 1.5, 5000

def exponencial(lam):
    return -math.log(1 - random.random()) / lam

muestra = [exponencial(lam) for _ in range(N)]
print("media muestral:", round(sum(muestra) / N, 3))
print("media teórica:", round(1 / lam, 3))
print("P(X > 1) muestral:", round(sum(1 for x in muestra if x > 1) / N, 3))
print("P(X > 1) teórica:", round(math.exp(-lam * 1), 3))

06 · Exploración

Laboratorio: planicie de U(a,b)

Movete a, b y N. El histograma debe staying plano a la altura 1/(b−a) (línea amarilla). Si estrechás el intervalo, la densidad sube: la misma área 1 en menos ancho.

EXPERIMENTO 03

Uniforme continua escalada

X = a + (b − a)·U

Los resultados numéricos aparecen debajo.
Media muestral3,500
Media teórica3,500
Densidad 1/(b−a)0,333
Rango[2,0 · 5,0)

Con a 2 y b 5, el histograma es plano a altura 0,333.

20 barras entre a y b. La línea punteada es la densidad teórica. Probá N = 200 (ruidoso) y N = 6000 (plano).

Preguntas para explorar

  1. Con a = 2, b = 5, ¿qué altura teórica esperás? ¿Qué pasa si pasás a b = 3?
  2. Con N = 200, ¿alguna barra se escapa mucho? ¿Es sesgo o ruido?
  3. Si ponés a = b, ¿qué debería pasar? ¿Por qué el laboratorio lo impide?
Ver respuestas sugeridas
  1. 1/3 ≈ 0,333. Con b = 3 el ancho es 1 y la altura sube a 1: misma área, menos base.
  2. Ruido: el error por barra es del orden 1/√(N/nbins). Con N grande se aplana.
  3. Sería un punto degenerado, no una continua (ancho 0, densidad infinita). El control fuerza b > a.

07 · Comprensión

Confusiones frecuentes

«La densidad es una probabilidad»

f(2,1) = 1,4 no significa “140 % de probabilidad”. La probabilidad es el área f·dx en un intervalo. Solo F y las áreas se leen como probabilidad.

«Generé continuas y salieron repetidas»

Si ves muchos repetidos exactos, redondeaste o usaste precisión baja. En el continuo ideal P(repetición exacta) = 0.

«El histograma plano prueba uniformidad»

Con pocas barras todo se ve plano. Usá ≥ 15–20 barras, N grande y compará media, varianza y CDF empírica (Temas 36–38).

«Escalar cambia la forma»

Escalar un uniforme da otro uniforme: cambia soporte y altura 1/(b−a), no la planicie. Deformar la forma requiere g no lineal (log, Box-Muller, rechazo).

08 · Práctica guiada

Ejercicios con Python

Ejercicio 1: jitter uniforme

Sumá ruido U(−0,5 · 0,5) a 3000 mediciones de 10,0 con semilla 12. La media debe seguir ≈ 10 y el rango ≈ [9,5 · 10,5).

import random

random.seed(12)
a, b, N = -0.5, 0.5, 3000
ruido = [a + (b - a) * random.random() for _ in range(N)]
mediciones = [10.0 + r for r in ruido]
print(round(sum(mediciones) / N, 3))
print(round(min(mediciones), 3), round(max(mediciones), 3))
Ver solución razonada

Media ≈ 10,0 (típicamente 9,99–10,01), mínimo ≈ 9,5 y máximo apenas bajo 10,5. Si el máximo llega a 10,5 exacto, revisá si incluiste el borde b.

Ejercicio 2: cola exponencial

Con λ = 2 y N = 8000 (semilla 13), estimá P(X > 0,5) y compará con e^(−λ·0,5) = e^(−1) ≈ 0,368.

import random
import math

random.seed(13)
lam, N = 2.0, 8000
m = [-math.log(1 - random.random()) / lam for _ in range(N)]
print(round(sum(1 for x in m if x > 0.5) / N, 3))
print(round(math.exp(-lam * 0.5), 3))
Ver solución

Ambos ≈ 0,368 (típicamente 0,36–0,38). Es la validación de cola que la media sola no garantiza.

Ejercicio 3: romper la planicie a propósito

Generá Y = U² con 5000 uniformes y observá que ya no es plana: se concentra cerca de 0. Es el anticipo de cómo una g no lineal crea forma.

Ver una posible respuesta
import random

random.seed(14)
N = 5000
ys = [random.random() ** 2 for _ in range(N)]
print("media:", round(sum(ys) / N, 3), "(teórica 1/3)")
print("P(Y < 0.25):", round(sum(1 for y in ys if y < 0.25) / N, 3), "(teórica 0.5)")

Media ≈ 0,333 y P(Y < 0,25) ≈ 0,5: la mitad de la masa se apretuja en el primer cuarto. Así nacen las densidades no uniformes.

09 · Síntesis

Ideas para recordar

  • En el continuo la probabilidad es área bajo f; F sube lisa de 0 a 1.
  • X = a + (b − a)·U genera U(a,b) exacta y es ya un caso de inversa.
  • Las g no lineales (log, potencias, Box-Muller) crean forma a partir de planicie.
  • Ningún valor exacto tiene probabilidad > 0: se valida con histogramas y colas.
  • Media sola no valida: mirá varianza, colas y CDF empírica.

En el próximo tema formalizaremos la pieza que une todo: la función de distribución acumulada F.