在R中使用while和for循环回答生日问题-与while循环作斗争



这里是初学者。我试图在r中回答这个问题:在其中一人于1月1日出生的可能性达到90%之前,你需要聚集多少人

我开始做"for"循环来确定百分比,它本身就起作用,但不能让"while"循环起作用,因为它会增加每次工作的人数(如果百分比还不是90(。它说我需要在循环之前定义"perc",这很有道理,但我不知道我会把它们定义为什么?

附加了当前不工作的循环-任何关于如何使while循环工作的建议都将非常好。


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

您有两个问题:

首先,不能对不存在的向量perc执行逻辑比较。相反,在循环之前定义它:

perc <- 0

其次,必须在while循环的每一轮结束时将x重置为0

while (perc < 90){
  #...SNIP
  print(paste(n))
  x <- 0
}

否则,x只是在两回合之间不断添加。

最后,出生日期的分布并不均匀。参见此处

最新更新