Алгоритм азартных игр
Мне трудно понять, как написать программу на 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)
чтобы увидеть, если программа запускается. На данный момент это не так, B просто равен 1, несмотря ни на что.
2 ответа
Чтобы сделать последствия таких азартных игр более очевидными, мы можем изменить эту программу, добавив переменные для хранения общего выигрыша / проигрыша и динамики этого числа.
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
такая азартная игра - это всегда пустая трата денег в долгосрочной перспективе.
Ваш 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)
до начала цикла. Без этого программа не будет работать, как ожидалось.
Кроме того, вы должны использовать ==
вместо =
при описании логических равенств.