Probabilidad y Estadística · Tema 02

Fenómenos determinísticos y aleatorios

Cuándo alcanza una fórmula fija y cuándo hay que simular con azar: cómo distinguirlos, cómo mezclarlos en un mismo modelo y cómo se ven en Python.

01 · Punto de partida

Reloj frente a dado

Un fenómeno determinístico es como un reloj: con la misma entrada, siempre da la misma salida. Calcular el IVA, el sueldo o la trayectoria de un proyectil sin viento es determinístico. Un fenómeno aleatorio es como un dado: con la misma entrada, cada repetición da un resultado distinto. Llegadas a una cola, tiempos de atención o fallas son aleatorios.

La mayoría de las simulaciones reales mezclan ambos: reglas fijas (capacidad, horarios, stock) más azar (demanda, demoras, roturas). La decisión del modelador es dónde poner cada uno. Poner azar donde hay regla es desperdiciar datos; poner regla donde hay azar es prometer certeza falsa.

  • Si repito el experimento igual, ¿obtengo siempre lo mismo?
  • ¿Qué parte puedo calcular y qué parte tengo que sortear?
  • ¿El azar es del fenómeno o de mi falta de datos?
  • ¿Cómo verifico que mi azar programado se comporta como espero?

02 · Definición

Los dos comportamientos, frente a frente

=

Determinístico

Regla exacta y repetible: total = precio × cantidad. Ideal para física simple, contabilidad y lógica del simulador.

~

Aleatorio

Resultado descripto por una distribución: demanda ~ U(6, 14). Ideal para llegadas, tiempos y fallas.

≋

Pseudoaleatorio

Azar generado por computadora con semilla: parece aleatorio pero es repetible. Es lo que usamos en Python.

Criterio práctico para clasificar un fenómeno.
PreguntaDeterminísticoAleatorio
¿Se repite igual?Sí, idénticoNo, varía cada vez
¿Qué se informa?Un valorPromedio + dispersión
¿Cuántas corridas?Una alcanzaMuchas réplicas
EjemploInterés de un plazo fijoEspera en una fila

03 · Criterio práctico

Cómo decidir en tu modelo

Usá esta regla de tres pasos antes de programar cada variable del simulador:

Modelá como fijo

Regla, contrato o física

Precios, capacidades, horarios, fórmulas contables, límites de stock. Si hay un documento que lo fija, es determinístico.

Modelá con azar

Personas, tiempos y fallas

Si intervienen personas, clima, red o desgaste, modelá con azar aunque hoy tengas pocos datos. Después ajustarás la distribución (temas 25 y 34).

Repetibilidad
Prueba de fuego: repetí la medición 10 veces igual. Si da lo mismo, es determinístico; si varía, es aleatorio.
Semilla
Número inicial del generador pseudoaleatorio. Misma semilla → misma secuencia. Permite depurar el azar.
Tendencia + ruido
Patrón habitual: una parte fija (tendencia) más una parte aleatoria (ruido). Ejemplo: ventas que crecen 1 por día ± 3.
Error común
Confundir «no lo sé» con «es aleatorio». A veces falta medir; otras, el fenómeno es genuinamente variable.

04 · Ejemplos

Qué pone un programador de cada lado

Parte fija+Parte aleatoria→Simulación mixta
  1. 1
    Facturación.

    Fijo: precio × cantidad. Aleatorio: cuántos clientes llegan hoy.

  2. 2
    Servidor.

    Fijo: capacidad de 4 workers. Aleatorio: pedidos por segundo y duración.

  3. 3
    Logística.

    Fijo: distancia y velocidad base. Aleatorio: tráfico y demoras.

  4. 4
    Videojuego.

    Fijo: daño base del arma. Aleatorio: crítico 10 % y dispersión del daño.

  5. 5
    Proyecto.

    Fijo: dependencias entre tareas. Aleatorio: duración real de cada tarea.

05 · Representación en Python

Función fija y sorteo, lado a lado

Lo determinístico es una función pura; lo aleatorio usa random. Con la misma semilla, lo aleatorio se vuelve repetible para depurar:

Python en tu navegador. Podés editar y ejecutar cada bloque. La primera ejecución descarga el intérprete; las siguientes son inmediatas.

# Determinístico: siempre igual
def total(precio, cantidad):
    return precio * cantidad

print(total(100, 3))
print(total(100, 3))

# Aleatorio: varía (pero con semilla es repetible)
import random
random.seed(11)
print([random.randint(1, 6) for _ in range(5)])
random.seed(11)
print([random.randint(1, 6) for _ in range(5)])

Consejo: cambiá la semilla y observá que la segunda lista cambia, pero las dos impresiones con igual semilla coinciden.

Tendencia + ruido: el modelo mixto mínimo

La forma más común de mezclar ambos mundos en una línea:

import random
random.seed(5)

def venta_del_dia(dia, base=10, crecimiento=1, ruido=3):
    tendencia = base + crecimiento * dia
    return tendencia + random.uniform(-ruido, ruido)

print([round(venta_del_dia(d), 1) for d in range(6)])

06 · Exploración

Laboratorio: tendencia fija vs caminata con ruido

Un indicador crece +paso por día (línea blanca punteada). Las 3 réplicas agregan ruido ± uniforme cada día. Subí el ruido y mirá cómo la tendencia se mantiene pero el camino se vuelve impredecible.

EXPERIMENTO 02

Tendencia + ruido

x(t+1) = x(t) + paso + U(−ruido, +ruido)

Los resultados numéricos aparecen debajo.
Final determinístico0,00
Promedio 3 réplicas0,00
Rango final0,00
Ruido / señal0,00

Con ruido 0, las 4 líneas coinciden.

12 pasos desde el valor inicial. La línea blanca es la tendencia pura; las de colores agregan azar uniforme cada paso. El promedio de réplicas sigue la tendencia, pero cada camino individual se desvía.

Preguntas para explorar

  1. Poné ruido en 0. ¿Qué ves? ¿Cuántas corridas harían falta?
  2. Con paso 2 y ruido 6, ¿el promedio final sigue cerca del fijo? ¿Y los caminos individuales?
  3. Con paso 0 y ruido 4, ¿hay tendencia? ¿Cómo llamarías a ese fenómeno?
Ver respuestas sugeridas
  1. Todas coinciden: es determinístico puro, una corrida alcanza.
  2. Sí, el promedio ronda el valor fijo (tiende a 10 + 12×2 = 34), pero cada réplica puede terminar 10 puntos arriba o abajo: tendencia clara, camino incierto.
  3. No hay tendencia, solo ruido acumulado: es una caminata aleatoria. El promedio ronda el inicio, pero la dispersión crece con el tiempo.

07 · Comprensión

Confusiones frecuentes

«Aleatorio es lo mismo que impredecible»

No del todo: el valor puntual es impredecible, pero la distribución (promedio, rango, forma) sí se puede predecir y verificar.

«Pseudoaleatorio no sirve porque no es azar real»

Sirve justamente por eso: es azar controlable. Con semilla podés repetir, depurar y compartir el experimento.

«Si agrego ruido, el modelo ya es realista»

Solo si el ruido tiene el rango y la forma correctos. Ruido arbitrario es decoración, no modelado.

«Todo lo que varía es aleatorio»

A veces varía por una causa fija no modelada (feriado, pico horario). Antes de sortear, preguntate si hay una regla escondida.

08 · Práctica guiada

Ejercicios con Python

Ejercicio 1: clasificar variables

Clasificá cada variable como determinística (D) o aleatoria (A) y ejecutá el código para verificar la intuición.

import random
random.seed(9)

precio, cantidad = 250, 4
print("total:", precio * cantidad)  # ¿D o A?

llegadas = [random.randint(2, 9) for _ in range(5)]
print("llegadas:", llegadas)  # ¿D o A?
Ver solución razonada

El total es D: siempre 1000. Las llegadas son A: varían entre 2 y 9 aunque la regla sea la misma. En tu simulador, el total irá dentro de la parte fija y las llegadas dentro de la parte sorteada.

Ejercicio 2: tendencia + ruido

Generá 12 días con base 20, crecimiento 2 y ruido ±5. Compará el último valor determinístico con el promedio de 3 réplicas.

import random

def dia(d, base=20, crec=2, ruido=5):
    return base + crec * d + random.uniform(-ruido, ruido)

random.seed(4)
for intento in range(3):
    serie = [dia(d) for d in range(12)]
    print(round(serie[-1], 1))

print("Fijo día 11:", 20 + 2 * 11)
Ver solución

El fijo del día 11 es 42. Las réplicas rondan 37 a 47: el centro respeta la tendencia, el ruido mueve el valor puntual. Esa es la firma de un modelo mixto.

Ejercicio 3: semilla y reproducibilidad

Comprobá que la misma semilla reproduce la misma réplica y que distinta semilla da otro camino. ¿Para qué sirve cada caso?

Ver una posible respuesta
import random

def replica(semilla):
    random.seed(semilla)
    return [round(random.uniform(0, 10), 1) for _ in range(4)]

print(replica(1))
print(replica(1))
print(replica(2))

Las dos primeras coinciden: sirven para depurar y compartir. La tercera difiere: sirve para explorar variabilidad. En simulación necesitás ambas: repetir y variar.

09 · Síntesis

Ideas para recordar

  • Determinístico se calcula una vez; aleatorio se estima con muchas réplicas.
  • La mayoría de los modelos son mixtos: tendencia fija + ruido aleatorio.
  • En Python, random.seed vuelve repetible el azar para depurar.
  • El promedio de réplicas sigue la tendencia; los caminos individuales muestran el riesgo.
  • Clasificar bien cada variable hoy ahorra calibraciones dolorosas mañana.

En el próximo tema formalizaremos el azar con experimentos aleatorios: espacio muestral, repeticiones y frecuencia como puente a la probabilidad.