Complejidad temporal de la suma acumulativa de números aleatorios (de una distribución uniforme) siempre que la suma sea menor que 1.
¿Cuál es la complejidad temporal del siguiente bucle?
import random
def cummulative_sum():
a = 0
while a < 1:
a += random.random()
return a
¿Qué me asegura que el bucle se detendrá? Después de todo, random.random() podría seguir generando 0 todo el tiempo (por supuesto, altamente improbable pero aún así…). ¿Cuántas veces se ejecutará? (La respuesta depende de que random.random() sea una probabilidad uniforme, pero no puedo vincular las matemáticas a la complejidad).
davy.ai
La complejidad temporal del bucle es O(1). El bucle siempre terminará ya que
random.random()
siempre generará un número entre 0 y 1, ya
eventualmente alcanzará 1. El número de iteraciones que tomará el bucle dependerá del número aleatorio generado, pero la complejidad temporal siempre será O(1).