Estoy trabajando con el departamento de I lenguaje de programación. Estoy tratando de construir un bucle en el que se realiza lo siguiente :
Paso 1: Mantenga la generación al azar dos números "a" y "b" hasta "a" y "b" son más de 12
Paso 2: realizar el Seguimiento de cuántos números aleatorios tuvo que ser generado hasta que se tomó para el Paso 1 para ser completado
Paso 3: Repita el Paso 1 y el Paso 2 100 veces
Ya no sé cómo mantener la generación de números aleatorios hasta que se cumpla una condición, traté de generar una gran cantidad de números aleatorios con la esperanza de que la condición se cumple (es probable que exista una mejor manera de escribir esto):
results <- list()
for (i in 1:100){
# do until break
repeat {
# repeat many random numbers
a = rnorm(10000,10,1)
b = rnorm(10000,10,1)
# does any pair meet the requirement
if (any(a > 12 & b > 12)) {
# put it in a data.frame
d_i = data.frame(a,b)
# end repeat
break
}
}
# select all rows until the first time the requirement is met
# it must be met, otherwise the loop would not have ended
d_i <- d_i[1:which(d_i$a > 10 & d_i$b > 10)[1], ]
# prep other variables and only keep last row (i.e. the row where the condition was met)
d_i$index = seq_len(nrow(d_i))
d_i$iteration = as.factor(i)
e_i = d_i[nrow(d_i),]
results[[i]] <- e_i
}
results_df <- do.call(rbind.data.frame, results)
Problema: Cuando veo los resultados, me di cuenta de que el bucle está mal teniendo en cuenta que la condición se cumple, por ejemplo:
head(results_df)
a b index iteration
4 10.29053 10.56263 4 1
5 10.95308 10.32236 5 2
3 10.74808 10.50135 3 3
13 11.87705 10.75067 13 4
1 10.17850 10.58678 1 5
14 10.14741 11.07238 1 6
Por ejemplo, en cada una de estas filas - "a" y "b" son menores de 12 años.
¿Alguien sabe por qué ocurre esto y por favor alguien puede mostrarme cómo solucionar este problema?
Gracias!