2016-04-26 14 views
1

Hallo Ich versuche ein Problem zu lösen, wo ein Spieler $ 10 hat. Eine Münze wird umgedreht, wenn der Spieler sie richtig anruft verdient er $ 1, wenn er falsch ist verliert er $ 1. Wie hoch ist die Wahrscheinlichkeit, dass er $ 0 erreicht, bevor er $ 20 erreicht? Wie lange dauert das Spiel im Durchschnitt? Wie viel hat er durchschnittlich nach 25 Flips? Soll ich eine Monte-Carlo-Methode in R verwenden, um diese zu codieren, aber ich bin ein Anfänger und nicht ganz sicher, wo hier start-- ist, was ich dachteMonte Carlo Würfel Simulation in R

game <- function() { 
x=10 ## $10 
y=0 ## number of times player gets $20 
z =0 ## number of times player loses money 
result<- sample(1:2,1, replace = TRUE) 
if (result==1) { 
x=x+1 } ## money goes up, 1 represents player calling correct coin 
else{ 
x=x-1 } 
if (x= 20) { 
y = y+1} ### dont know how to stop trials 
if(x=0){ 
z=z+1} 

Ich bin schön verloren auf, wie man Code das ist aber hier eine Idee. Grundsätzlich möchte ich eine 50/50 Simulation simulieren und sehen, wie oft y auftritt und z auftritt. Ich bin nicht sicher, wie man eine bestimmte Anzahl von Versuchen durchführt oder stoppt, wenn ich 20 oder 0 erreiche .... Danke für jede Hilfe.

Antwort

1

Ahh, eine Version der Gambler's Ruin.

Irgendwie scheint es, als ob Sie noch Schleifen (wie for und while) in R verwenden müssen, was seltsam ist, da es ziemlich weit im Semester ist.

Im Folgenden können Sie die Simulation ausführen, um Ihre Fragen zu beantworten.

# Set configuration 
money = 10 # $10 

B = 100   # Number of games to play 

y = 0   # Number of times player gets $20 from ALL games run 
z = rep(0, B) # Number of times player loses money per game 
r = rep(0, B) # Number of rounds played per game 
a = rep(0, B) # Value on the 25th turn per game (not the average!) 

# Start playing games! 
for(i in 1:B){ 

    # Reset settings for each game. 

    # Make it reproducible by setting a seed. 
    set.seed(1337+i) 

    # Set Counter 
    count = 1 

    # Set game 
    x = money 

    while(x > 0){ 

    # Perform the draw 
    result = sample(1:2,1, replace = TRUE) 

    # 1 means the player wins! 
    if(result == 1) { 
     x = x + 1 

    } else { # 2 - The player loses! 
     x = x - 1 

     # Increment Player Loss 
     z[i] = z[i] + 1 
    } 

    # Increase round calculation 
    r[i] = r[i] + 1 

    count = count + 1 

    # After 25 flips, how much is left? 
    if(count == 25){ 
     a[i] = x 
    } 

    # Reset to zero? 
    if(x == 20){ 
     y = y + 1 

     # End game 
     break; 
    } 

    } 

}