在 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
}
我想抛一枚硬币,并希望当我连续出现两个正面朝上时停止。
这是我的代码
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
}