Números Pseudoaleatorios · Tema 08

Uniformidad

Qué significa «cada valor con la misma chance»: reparto justo por intervalos en [0,1), histogramas planos y el chequeo que sostiene todo lo que sigue.

01 · Punto de partida

La propiedad que sostiene el edificio

En el Tema 7 listamos las exigencias; hoy abrimos la primera: uniformidad. Casi todo lo que harás después —llevar [0,1) a [a,b), sortear enteros, mezclar, muestrear (Temas 19–25)— presupone que tu base es uniforme. Si la base está torcida, cada piso hereda el sesgo.

Uniforme no significa «promedia 0,5». Significa algo más fuerte y comprobable: cada pedazo igual de [0,1) recibe la misma cantidad de valores, a menos de fluctuación muestral.

  • ¿Qué promete exactamente U(0,1)?
  • ¿Cómo se distingue uniforme continuo de uniforme discreto?
  • ¿Cuánto desvío es normal con N finito?
  • ¿Cómo lo medís con un histograma sin autoengañarte?

02 · Definición

Continua y discreta, sin mezclar

◈

Uniforme continua U(0,1)

Densidad plana 1 en [0,1). Media 0,5, varianza 1/12 ≈ 0,0833. Es la salida estándar de todo generador (Temas 19–20).

⇄

Uniforme discreta

K resultados con chance 1/k: dado (1/6), moneda (1/2), entero en 0..m−1. Es lo que obtienes al trocear [0,1).

▣

Fluctuación normal

Con N finito nunca sale exacto: en 1000 valores, un décimo espera 100 ± ~10. La regularidad es estadística, no contable.

Qué esperar con N = 1000 y 10 bins.
BinAnchoEsperadoNormal ver
[0, 0,1)0,110085–115
[0,4, 0,5)0,110085–115
[0,9, 1)0,110085–115
[0,2, 0,4)0,2200180–220

03 · Medición

Medir uniformidad sin mentirte

Histograma con esperado
Contá por bins y dibujá la línea N/k. Ojo entrenado en 10 segundos: huecos y picos sistemáticos.
Desvío máximo
max|obs − esp| / esp: con N grande debe achicarse. Si con N = 2000 sigue en 80 %, hay sesgo, no mala suerte.
Chi intuitivo
sum((obs−esp)²/esp): resume todos los bins en un número. Valores chicos = parejo; enormes = torcido. Formal en Tema 27.
Bins con criterio
Ni 2 ni 200: con N = 1000, 8–16 bins. Muy pocos esconden sesgo; demasiados convierten ruido en «patrón».

Uniforme real

Plano con ruido

Barras que oscilan parejo alrededor del ideal, sin bins vacíos ni picos que crecen con N.

Falsa uniforme

Promedio bueno, reparto malo

Media 0,5 pero mitad de bins vacíos: el promedio esconde, el histograma delata.

04 · Ejemplos

Tres uniformes que debes reconocer

U(0,1)→Trocear→Enteros y eventos
  1. 1
    Dado justo.

    Uniforme discreta k = 6: cada cara 1/6. En 6000 tiros, ~1000 por cara.

  2. 2
    Décimos de U(0,1).

    Uniforme continua troceada en 10: cada décimo 10 %. Es el test de frecuencia (Tema 29).

  3. 3
    Constante 0,5.

    Media perfecta, varianza cero, histograma de un solo pico: la anti-uniforme. Nunca simula nada.

05 · Cómputo en Python

Histograma y chi en 15 líneas

El patrón que repetirás en los Temas 27 y 29: contar, comparar con N/k y resumir.

Python en tu navegador. Cambiá N y k y observá cómo el ruido se achica pero el sesgo no.

import random

random.seed(5)
N, K = 1000, 10
vals = [random.random() for _ in range(N)]
bins = [0] * K
for v in vals:
    bins[min(K - 1, int(v * K))] += 1
print("obs:", bins)
print("esp:", N // K)

Todos deben rondar 100. Un 40 o un 170 repetido con N = 1000 ya es señal, no anécdota.

Chi intuitivo

Un solo número para «qué tan lejos del plano»:

esp = N / K
chi = sum((o - esp) ** 2 / esp for o in bins)
print("chi:", round(chi, 2), "(con K=10, sano ronda 5-15)")

06 · Exploración

Laboratorio: plano con ruido vs. torcido

Elegí fuente, N y cantidad de bins. La línea punteada es el ideal N/k. El panel da media, desvío máximo y chi intuitivo.

EXPERIMENTO 08

Reparto justo bajo la lupa

esperado = N / k

Los resultados numéricos aparecen debajo.
Media—
Desvío máx.—
Chi—
Veredicto—

Con N = 1000 el sano oscila parejo alrededor del ideal.

Barras parejas con ruido = sano. Pico sistemático o bins vacíos = sesgo aunque N crezca.

Preguntas para explorar

  1. Con sano y N = 100, ¿el desvío máximo es grande? ¿Y con N = 3000? ¿Qué enseña sobre juzgar con poco N?
  2. Con sesgado, ¿el chi baja al subir N o se confirma? ¿Por qué?
  3. Con constante 0,5 y k = 10, ¿cuántos bins quedan vacíos? ¿Qué media da igual?
Ver respuestas sugeridas
  1. Sí, con N chico el ruido relativo es grande; con N grande se achica. Con poco N todo parece sospechoso: no juzgues uniformity con 50 valores.
  2. Se confirma y crece: el sesgo es estructural. Más N da más evidencia en contra, no lo cura.
  3. 9 vacíos y 1 lleno con N. Media 0,5 perfecta: la prueba de que media no es uniformidad.

07 · Comprensión

Confusiones frecuentes

«Media 0,5, listo»

La constante 0,5 también promedia 0,5. Uniformidad exige reparto, varianza 1/12 e histograma plano, no un número.

«Con 100 valores ya se ve»

Con N chico el ruido tapa todo: desvíos de 30 % son normales. Para k = 10 pedí al menos varios cientos.

«Cambio los bins hasta que se vea plano»

Elegir k a posteriori para esconder un pico es trampa. K se fija antes, por criterio (N/k ≥ 20 suele pedirse), y se reporta.

«Uniforme discreto y continuo son lo mismo»

El discreto vive en k puntos (1/6 por cara); el continuo en infinitos con densidad 1. Trocear el continuo da el discreto, pero los tests difieren.

08 · Práctica guiada

Ejercicios con Python

Ejercicio 1: el intervalo [0,2, 0,4)

Si U es uniforme, P(0,2 ≤ U < 0,4) = 0,2. Verificalo con 5000 valores: ¿qué proporción cae ahí?

import random

random.seed(8)
vals = [random.random() for _ in range(5000)]
dentro = sum(1 for v in vals if 0.2 <= v < 0.4)
print(dentro / len(vals))
Ver solución razonada

Deberías rondar 0,20 (±0,015 con N = 5000). Lejos de 0,2 de forma repetida = sesgo en esa zona.

Ejercicio 2: dado de 6000

Simulá el dado como int(U*6)+1 y contá por cara. ¿Alguna se escapa de 900–1100?

import random

random.seed(8)
dados = [int(random.random() * 6) + 1 for _ in range(6000)]
print([dados.count(c) for c in range(1, 7)])
Ver solución

Todas deben rondar 1000. Un 750 o 1300 repetido delata dado cargado o mala transformación (Tema 22).

Ejercicio 3: chi de juguete

Calculá el chi de tu histograma de 10 bins con N = 1000. Sano ronda 5–15; sesgado se dispara a cientos.

Ver una posible respuesta
import random

random.seed(8)
N, K = 1000, 10
vals = [random.random() for _ in range(N)]
bins = [0] * K
for v in vals:
    bins[min(K - 1, int(v * K))] += 1
esp = N / K
chi = sum((o - esp) ** 2 / esp for o in bins)
print(bins)
print("chi:", round(chi, 2))

Este es el germen de la prueba chi-cuadrado formal del Tema 27. Acostumbrate a reportar N, K, chi juntos.

09 · Síntesis

Ideas para recordar

  • U(0,1): probabilidad = longitud; cada bin de ancho 1/k espera N/k.
  • Media 0,5 y varianza 1/12 son necesarias pero no suficientes.
  • El histograma con esperado es el primer test; el chi lo resume en un número.
  • Con N chico el ruido es grande: no juzgues con 100 valores.
  • K se fija antes y se reporta; cambiarlo a posteriori es trampa.

En el próximo tema veremos la segunda exigencia: la independencia, es decir, que conocer el presente no te regale el futuro.