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.

Responder a un problema de cumpleaños utilizando un bucle while y for en R – con dificultades en el bucle while.

Principiante aquí. Estoy tratando de responder esta pregunta en r: ¿Cuántas personas necesitarías reunir antes de que haya un 90% de probabilidad de que una de ellas haya nacido el 1 de enero?

Comencé haciendo el bucle ‘for’ que determina el porcentaje, que funciona por sí solo, pero no puedo hacer que funcione el bucle ‘while’ que aumentará el número de personas cada vez (si el porcentaje aún no es del 90%). Dice que necesito definir ‘perc’ antes de los bucles, lo cual tiene sentido, pero no sé cómo definirlos correctamente.

El bucle actual que no funciona está adjunto: cualquier consejo sobre cómo hacer que funcione el bucle while sería genial.


n<-1 x<-0 while (perc < 90){ n <- n + 1 {for (i in 1:1000) { bdays <- sample(1:365, size=n, replace = TRUE) if (1 %in% bdays) score = 1 else score = 0 x = x + score perc<-x/1000*100 }} if (perc > 90){ break } print(paste(n)) }
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para hacer que el bucle while funcione, necesitas definir la variable perc antes de los bucles de la siguiente manera:

    n <- 1
    x <- 0
    perc <- 0
    
    while (perc < 90){
      n <- n + 1
      for (i in 1:1000) {
        bdays <- sample(1:365, size=n, replace = TRUE)
        if (1 %in% bdays) score = 1 else score = 0
        x <- x + score
      }
      perc <- x / 1000 * 100
    }
    
    print(paste(n))
    

    Aquí, agregamos perc <- 0 antes del bucle while porque necesita comenzar en 0 antes de cualquier cálculo. El bucle seguirá aumentando n en 1 hasta que el porcentaje perc sea mayor o igual al 90%. El bucle for dentro del bucle while itera 1000 veces y cuenta la cantidad de veces que al menos una persona del grupo de n personas nació el 1 de enero. Finalmente, dividimos el conteo total por 1000 y multiplicamos por 100 para obtener el porcentaje.

    También eliminamos las llaves alrededor del bucle for ya que no son necesarias. Además, eliminamos el cálculo de perc dentro del bucle for ya que solo debe calcularse una vez por cada iteración del bucle while.

Comments are closed.