Reputation: 67
I want to toss a coin and want it to stop when I get two consecutive heads in a row.
Here is my code
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())
}
I have my flip function made. I am not sure if I need use a if else statement or count the flips to check for back to back 1's after each coin flip? I am using a while for loop
Upvotes: 0
Views: 778
Reputation: 101337
Perhaps you can try repeat
repeat {
tosses <- c(tosses, flip())
if (mean(tail(tosses, 2)) == 1 & length(tosses) > 1) break
}
Upvotes: 1
Reputation: 8572
Similar to sindri's answer, but removing the need to check length
at each iteration
while(sum(tail(tosses, 2)) != 2){
tosses <- c(tosses, flip())
}
Upvotes: 1
Reputation: 33488
With minimum modification of your current code:
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())
}
Upvotes: 1