Алгоритм азартных игр

Мне трудно понять, как написать программу на 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) до начала цикла. Без этого программа не будет работать, как ожидалось.

Кроме того, вы должны использовать == вместо = при описании логических равенств.

Другие вопросы по тегам