我很难搞清楚如何在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 :(得分: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)
。没有它,程序就不会按预期运行。
此外,在描述逻辑平等时,您应该使用==
代替=
。
答案 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")
顺便说一句,在最大可能
B < Inf
的情况下,这样的赌博总是浪费金钱。