在 R 中使用 While for 循环模拟掷硬币

Using a While for loop for a simulated coin flip in R

我想抛一枚硬币,并希望当我连续出现两个正面朝上时停止。

这是我的代码

coin<-0:1
sample(coin, size = 1, replace = TRUE)

flip<-function(){
  coin<-0:1
  toss<-sample(coin, size = 1, replace = TRUE)
}
flip()

heads=1
tosses<-c()
while (heads=="?") {
  tosses=c(tosses, flip())
}

翻转功能制作完成。我不确定我是否需要使用 if else 语句或计算翻转次数以在每次抛硬币后检查背靠背 1?我正在使用 while for loop

对您当前的代码进行最少的修改:

flip<-function(){
  coin<-0:1
  sample(coin, size = 1, replace = TRUE)
}

tosses<-c()
while (length(tosses) < 2 | !all(tail(tosses, 2) == 1)) {
  tosses=c(tosses, flip())
}

类似于 sindri 的回答,但无需在每次迭代时检查 length

while(sum(tail(tosses, 2)) != 2){
  tosses <- c(tosses, flip())
}

也许你可以试试repeat

repeat {
  tosses <- c(tosses, flip())
  if (mean(tail(tosses, 2)) == 1 & length(tosses) > 1) break
}