es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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).

Tags:  , ,

Answer

  1. Avatar for 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, y a 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).

Comments are closed.