2016-07-18 3 views
0

Dans le code suivant, la boucle while imprime la valeur z jusqu'à ce que z atteigne 0 ou 11, sa valeur étant ajoutée ou soustraite par des flips d'une pièce de monnaie équitable.Affiche le nombre de fois que la boucle est exécutée

Comment cette fonction pourrait-elle également imprimer le nombre de fois que la pièce est retournée?

z <- 5 

while(z >= 1 && z <= 10) { 
    print(z) 
    coin <- rbinom(1, 1, 0.5) 

    if(coin == 1) { 
     z <- z +1 
    } else { 
    z <- z -1 
    } 

} 

Répondre

0

Vous pouvez enregistrer le nombre de fois que la pièce comme une autre variable Flipped, appelé flips dans le code ci-dessous. Ensuite, à chaque fois que la boucle while est exécutée, incrémentez simplement flips. Renvoyez ensuite flips à la fin de la fonction.

coin_flip <- function(z) { 

    flips <- 0 

    while(z >= 1 && z <= 10) { 
    print(z) 
    coin <- rbinom(1, 1, 0.5) 

    if(coin == 1) { 
     z <- z +1 
    } else { 
     z <- z -1 
    } 

    flips <- flips + 1 

    } 

    paste("The coin flipped", flips, "times.") 

} 

set.seed(1234) 
coin_flip(5) 
# [1] 5 
# [1] 4 
# [1] 5 
# [1] 6 
# [1] 7 
# [1] 8 
# [1] 9 
# [1] 8 
# [1] 7 
# [1] 8 
# [1] 9 
# [1] 10 
# [1] "The coin flipped 12 times."