这里是初学者。我试图在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
只是在两回合之间不断添加。
最后,出生日期的分布并不均匀。参见此处