2015-05-06 69 views
2

我很難搞清楚如何在R中編寫程序。 我想在紅色賭注1 $,如果我贏了,我得到1 $,並再次下注,如果我輸了,我加倍我的賭注。該程序應該運行,直到我贏$ 10的賭注變得大於100 這裏是我的代碼:賭博算法

W=0 
    B=1 

    for(i=sample(0:1,1)){ 
     B<-1 
     W<-0 
     while(W<10 & B<=100){ 
     if(i=1){ 
      W<-W+B 
      B<-B 
     }else{ 
      B<-2*B 
     } 
     print(B) 
     } 
    } 

i決定,如果我輸還是贏。我使用print(B)來查看if程序是否運行。此時它不會,B無論如何都等於1。

+0

我也嘗試過'vec1 = sample(0:1,50)'並設置'i = vec1'。但幾乎相同的事情發生。 – AK9309

+0

你的'sample'需要在你的'while(){...}' – thelatemail

回答

4

您的for循環在這種情況下沒有意義。您應該每次在while循環中再取一個樣本。

B = 1 
    W = 0 
    while(W<10 & B<=100){ 
    i=sample(0:1,1) 
    if(i==1){ 
     W<-W+B 
     B<-B 
    }else{ 
     B<-2*B 
    } 
    print(B) 
    } 

此外,在原始for循環中,您需要一個額外的右邊括號裏)循環之前的sample(0:1,1)啓動後。沒有它,程序沒有按預期運行。

此外,在描述邏輯平等時,您應該使用==而不是=

+0

謝謝,編輯原文。出於某種原因,當我運行時,您提供的抽樣的例子不會發生。 'i'只是等於1.或者如果我真的寫了'if(i <-0)'等''i'等於0 – AK9309

+1

'i = 1'中的'='符號應該是'==' ,使'我== 1'。 –

4

爲了使這種賭博的後果更加明顯,我們可以修改這個程序,添加變量來存儲總贏/輸和這個數字的動態。

W_dyn <- c()  # will store cumulative Win/Lose dynamics 
W. <- 0   # total sum of Win/Lose   
step <- 0   # number of bet round - a cycle of bets till one of 
        # conditions to stop happen: W > 10 or B >= 100 
while (abs(W.) < 1000) 
{ B <- 1 
    while (W < 10 & B <= 100) 
    { i <- sample(0:1, 1) 
    if (i == 1) 
    { W <- W + B 
     B <- 1 
    } else 
    { W <- W - B 
     B <- 2 * B 
    } 
    print(B) 
    } 
    W. <- W. + W 
    W <- 0 
    step <- step + 1 
    W_dyn[step] <- W. 
    cat("we have", W., "after", step, "bet rounds\n") 
} 
# then we can visualize our way to wealth or poverty 
plot(W_dyn, type = "l") 

Bad Luck! :(It's My Day! :)

BTW,最大可能B < Inf這種賭博的條件總是錢在長遠的浪費。