16 · Distribución Uniforme
Densidad igual en todo [a, b] — la distribución de máxima entropía en un intervalo acotado y el caballo de trabajo de la inicialización aleatoria.
Uniforme(a, b) coloca densidad igual en cada punto de [a, b] — la distribución de máxima entropía en un intervalo acotado.
Sin esto:
Sin ella, no puedes muestrear de forma justa dentro de un rango — el paso de inicialización aleatoria de casi todos los algoritmos depende de extracciones uniformes.
La distribución Uniforme Uniforme(a, b) modela ignorancia completa sobre dónde en [a, b] se encuentra un valor: cada subintervalo de la misma longitud tiene la misma probabilidad.
PDF: f(x) = 1 / (b − a) para x ∈ [a, b], de lo contrario 0
La PDF es un rectángulo horizontal — altura constante, cero fuera de [a, b].
Parámetros:
- a — límite inferior
- b — límite superior
- Convención de scipy:
scipy.stats.uniform(loc=a, scale=b−a)— el segundo parámetro es el ancho, no el límite superior.
Media y varianza:
- E[X] = (a + b) / 2 — el punto medio
- Var(X) = (b − a)² / 12
CDF: F(x) = (x − a) / (b − a) para x ∈ [a, b] F(a) = 0, F(b) = 1 — una rampa lineal simple de 0 a 1.
Uniforme discreta (brevemente): si lanzas un dado justo, cada uno de {1, 2, 3, 4, 5, 6} tiene probabilidad 1/6 — esa es la versión discreta.
El truco de muestreo por transformada inversa: Dado que la CDF Uniforme es la identidad en [0, 1], puedes simular cualquier distribución F mediante:
- Extrae u ~ Uniforme(0, 1)
- Devuelve x = F⁻¹(u)
Por eso rng.uniform(0, 1) es la primitiva de generación de números aleatorios más fundamental — cada sampler de cualquier otra distribución puede derivarse de ella.
Python (in browser)
scipy.stats.uniform(loc=a, scale=b−a) — nota que el segundo argumento es el ancho (b−a), no b en sí. Media = (a+b)/2 = 5. Var = (b−a)²/12 = 100/12 ≈ 8.33. PDF = 1/(b−a) = 0.1 en todo [0, 10]. La CDF crece linealmente de 0 a 1.
Python runs entirely in your browser via Pyodide (~6 MB on first Run, cached after).
Python (in browser)
100 000 muestras de Uniforme(0, 10) forman un histograma aproximadamente plano — cada valor x en [0, 10] es igualmente probable. La línea discontinua roja en y=0.1 es la PDF teórica. Abre /tmp/uniform.png para ver.
Python runs entirely in your browser via Pyodide (~6 MB on first Run, cached after).
El truco de la transformada inversa — extrae u ~ Uniforme(0,1), devuelve F⁻¹(u) — es la base teórica de todo muestreador aleatorio. En NumPy todas las distribuciones se reducen en última instancia a extracciones uniformes bajo el capó.
Var(Uniforme(0, 12)) = ?
- **PDF**: f(x) = 1/(b−a) en [a,b], 0 en otro lugar. **Media** = (a+b)/2, **Var** = (b−a)²/12. La CDF es una rampa lineal de 0 a 1.
- Parametrización de scipy: `uniform(loc=a, scale=b−a)` — el segundo argumento es el ancho, no el límite superior.
- Muestreo por transformada inversa: extrae u ~ Uniforme(0,1), devuelve F⁻¹(u) — la base teórica de todo muestreador aleatorio.
Inicialización aleatoria (pesos, máscaras de dropout), selección de filas para la división entrenamiento/prueba, puntos de inicio de MCMC.
Si lo quitas: No hay forma de aleatorizar nada de manera justa — todo experimento de reproducibilidad usa extracciones uniformes bajo el capó.