Ho creato una funzione RPS che randomizza la mossa del computer per un turno. Ad esempio, se si digita in rps ("rock"), la funzione sputerà a caso sia roccia, carta, forbici insieme al risultato (vittoria, perdita, pareggio).Provare a randomizzare un gioco di roccia, carta, forbici in R
rps = function(move){
options = c("rock", "paper", "scissors")
comp.move = sample(options, size = 1)
if(move == "rock" & comp.move == "rock"){
names(comp.move) = "tie"
}else
if(move == "rock" & comp.move == "scissors"){
names(comp.move) = "loss"
}else
if(move == "rock" & comp.move == "paper"){
names(comp.move) = "win"
}else
if(move == "paper" & comp.move == "paper"){
names(comp.move) = "tie"
}else
if(move == "paper" & comp.move == "scissors"){
names(comp.move) = "win"
}else
if(move == "paper" & comp.move == "rock"){
names(comp.move) = "loss"
}else
if(move == "scissors" & comp.move == "scissors"){
names(comp.move) = "tie"
}else
if(move == "scissors" & comp.move == "rock"){
names(comp.move) = "win"
}else
if(move == "scissors" & comp.move == "paper"){
names(comp.move) = "loss"
}
return(comp.move)
}
Ora, voglio giocare una versione del gioco in cui ciò accade 50 volte. Ho già creato un vettore di lunghezza 50 che ha le mosse umane preregistrate.
human.move = c("rock", "paper", "scissors", "paper", "paper", "rock", "scissors", "rock", "rock", "paper", "paper", "scissors", "rock", "rock", "paper", "paper", "paper", "scissors", "paper", "rock", "paper", "rock", "rock", "scissors", "scissors", "paper", "rock", "paper", "scissors", "rock", "paper", "paper", "scissors", "rock", "paper", "rock", "paper", "paper", "scissors", "scissors", "paper", "rock", "rock", "scissors", "scissors", "rock", "paper", "scissors", "scissors", "rock")
Come faccio ad avere il computer per eseguire la funzione rps su ogni elemento in questo vettore, e mi danno i risultati? Attualmente la mia funzione prende solo il primo elemento del mio vettore di mosse umane (che è rock) e confronta solo le sue mosse casuali con quelle.
rps.random=function(move,n=50){
comp.moves = vector("character")
for(i in human.move){
comp.move=rps(move[i])
comp.moves = append(comp.moves,comp.move, after = length(comp.moves))
}
return(comp.moves)
}
Molte delle risposte sotto sono grandi, e coinvolgere riscrivere gran parte del codice del PO originale. La domanda, tuttavia, era "Come faccio ad avere il computer per eseguire la funzione rps su ogni elemento in questo vettore, e darmi i risultati?" –
@GaryWeissman: è vero, ma a volte può essere meglio offrire miglioramenti agli attuali metodi dell'OP. –
@RichardScriven anche questo è vero. –