Я хочу дать оценку на основе результата игры, но возникает ошибка - PullRequest
0 голосов
/ 24 мая 2019

У меня проблема с подсчетом очков Игра в русскую рулетку Я хочу повторить игру 10 раз и дать очко выжившим

game <- replicate(10, shot())
data.frame(table(game))

и я получил результат этой игры

              game Freq
1 player1 game end    4
2 player3 game end    2
3 player4 game end    1
4 player6 game end    3

Я хочу знать, как я могу конвертировать результаты игры в результаты, подобные этой давая одно очко выжившим

1 player1 point 6
2 player2 point 10
3 player3 point 8
4 player4 point 9
5 player5 point 10
6 player6 point 7

но я понятия не имею об этом Мне отчаянно нужна помощь

Я добавляю свой код

shot <- function()
{
  if(sample(c(1,-1),1,prob=c(1/6,5/6)) == T) 
  {
    print("player1 game end") #if p1 get true at 1st round it end
  }
  else if(shot <- sample(c(1,-1),1,prob=c(1/5,4/5)) == T) 
  {
    print("player2 game end") #if p2 get true at 2nd round it end
  }
  else if(shot <- sample(c(1,-1),1,prob=c(1/4,3/4)) == T) 
  {
    print("player3 game end") #if p3 get true at 3rd round it end
  }
  else if(shot <- sample(c(1,-1),1,prob=c(1/3,2/3)) == T) 
  {
    print("player4 game end") #if p4 get true at 4th round it end
  }
  else if(shot <- sample(c(1,-1),1,prob=c(1/2,1/2)) == T) 
  {
    print("player5 game end") #if p5 get true at 5th round it end
  }else if(shot <- sample(c(1,-1),1,prob=c(1,0)) == T) 
  {
    print("player6 game end") #if p6 get true at 5th round it end
  }
}
shot()



Моя игра начинается с этого кода Как можно совмещать с кодом выигрыша


game
player <- sample(1:6, size = 6, replace = FALSE) 
player

names(player)[player==1] <- "p1"  
names(player)[player==2] <- "p2" 
names(player)[player==3] <- "p3" 
names(player)[player==4] <- "p4" 
names(player)[player==5] <- "p5"


1 Ответ

0 голосов
/ 24 мая 2019

Вот что мы можем сделать.Сначала мы создаем players data.frame, который мы будем использовать, чтобы присоединиться к результату игры data.frame.Затем мы вычисляем score, который выглядит как 10 - Freq:

# generate games
set.seed(1) # reproducible
games <- replicate(10, shot())
# make players data
players <- data.frame(player = paste0("player", 1:6))
# make games data
games_table <- data.frame(table(games))
games_table$player <- gsub(" game end", "", games_table$games) # player ID
# merge data
players <- merge(players, games_table, all.x = TRUE)
# create score
players$score <- 10 - ifelse(is.na(players$Freq), 0, players$Freq)

#    player            games Freq score
# 1 player1 player1 game end    2     8
# 2 player2 player2 game end    2     8
# 3 player3 player3 game end    1     9
# 4 player4 player4 game end    2     8
# 5 player5             <NA>   NA    10
# 6 player6 player6 game end    3     7
...