Randomise Ich habe eine RPS-Funktion erstellt, die die Bewegung des Computers für eine Runde randomisiert. Zum Beispiel, wenn Sie rps ("Rock") eingeben, spuckt die Funktion zufällig Stein, Papier, Schere zusammen mit dem Ergebnis aus (Gewinn, Verlust, Gleichstand).Versuchen, ein Spiel von Stein, Papier, Schere 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)
}
Jetzt möchte ich eine Version des Spiels spielen, wo dies 50 Mal passiert. Ich habe bereits einen Vektor der Länge 50 erstellt, der die zuvor aufgenommenen menschlichen Bewegungen enthält.
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")
Wie erhalte ich den Computer, um die rps Funktion für jedes Element in diesem Vektor zu laufen, und geben Sie mir die Ergebnisse? Momentan benutzt meine Funktion nur das erste Element meines menschlichen Bewegungsvektors (welches Rock ist) und vergleicht nur seine zufälligen Bewegungen damit.
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)
}
Viele der Antworten unten groß sind, und beinhalten viel von der ursprünglichen OP des Codes neu zu schreiben. Die Frage lautete jedoch: "Wie bekomme ich den Computer dazu, die rps-Funktion für jedes Element in diesem Vektor auszuführen und mir die Ergebnisse zu geben?" –
@GaryWeissman - Das ist richtig, aber manchmal kann es besser sein, Verbesserungen der aktuellen Methoden des OP anzubieten. –
@RichardScriven das ist auch wahr. –