Я относительно новичок в R, и у меня есть проект для симуляции игры.Я разработал игру и ввел код, в котором он будет возвращать количество ходов, необходимое для победы в игре, однако я застрял в том, как имитировать игру 1000 раз и вернуть среднее значение, хотя это кажется таким простым, япросто не могу решить это.
Код для возврата количества ходов, необходимых для победы:
s=seq(1:25)
current=vector()
current[1]=1
gameon=1
turns=1
while(gameon==1)
{
current[turns+1]=sample(s,1,replace=TRUE,prob=w[current[turns],])
turns=turns+1
if (current[turns]==25)
{
gameon=0
}
}
Код игры и матрица перехода:
w = matrix(0, nrow=25, ncol=25)
for (i in 1:25) #RED - 1,2 down 2 3,4 back 3 5,6
stay
{ #AMBER - 1,2 down 1 3,4 back 2 5,6
forward 1
if (i == 4) #GREEN - 1,2 stay 3,4 forward 1 5,6
forward 2
{
w[i, i+2] = 1/3
w[i,i+1] = 1/3 # effects on a state with a GREEN pub
w[i,i] = 1/3
}
else if (i == 6)
{
w[i,i] = 1/3
w[i,i+1] = 1/3
w[i,i+2] = 1/3
}
else if (i == 7)
{
w[i,i-3] = 1/3
w[i,i-2] = 1/3 # effects on a state with an AMBER pub
w[i,i+1] = 1/3
}
else if (i == 12)
{
w[i,i] = 1/3
w[i,i+1] = 1/3
w[i,i+2] = 1/3
}
else if (i == 16)
{
w[i,i-3] = 1/3
w[i,i-2] = 1/3 # effects on a state with a RED pub
w[i,i+1] = 1/3
}
else if (i == 15)
{
w[i,i-10] = 1/3
w[i,i-3] = 1/3 # effects on a state with a RED pub
w[i,i] = 1/3
}
else if (i == 18)
{
w[i,i] = 1/3
w[i,i+1] = 1/3 # effects on a state with a RED pub
w[i,i+2] = 1/3
}
else if (i == 21)
{
w[i,i-10] = 1/3
w[i,i-3] = 1/3
w[i,i] = 1/3
}
else if (i == 24)
{
w[i,i-10] = 1/3
w[i,i-3] = 1/3 #horrible square to be stuck on, cant win from
this square.
w[i,i] = 1/3
}
else if (i <= 19)
{
w[i, seq(i+1,i+6)] = 1/6
}
else if (i==20)
{
w[i,seq(i+1,i+4)] = 1/6
w[i,i+5] = 2/6
}
else if (i==22)
{
w[i,seq(i+1,i+2)] = 1/6
w[i,i+3] = 4/6
}
else if (i == 23)
{
w[i,i+1] = 1/6
w[i,i+2] = 5/6
}
else if (i == 25)
{
w[i,i] = 1 #game finished
}
}
Я полагаю, что цикл for будетлучше всего использовать, но я не знаю, как настроить его так, чтобы оно возвращало среднее число ходов.