Javascript 如何在每次代码迭代中调用随机函数时生成相同的随机字符串?
我正在尝试建立一个石头,布,剪刀游戏,在命令行中玩。在代码的最后,我记录了3件事:人类选择,计算机选择(随机生成),然后是游戏结果,例如“你赢了!石头打败剪刀!” 问题在于,有时结果行根据人工和计算机选择返回正确的结果,但有时它会生成不同的结果语句,即使两个选择相同。e、 g.如果选择的是人类=摇滚和计算机=摇滚,它可能会在一次尝试中返回“这是一个平局!”,然后在另一次尝试中返回“你输了!纸赢了摇滚”,即使它仍然是摇滚对摇滚 我认为问题在于最后的3个console.log语句。首先,人类的选择在“岩石”处总是不变的,所以这很好。其次,我记录随机生成的计算机选择。第三,当我记录以人类选择和随机计算机选择为参数的结果轮时,它再次运行随机函数,并为计算机拖动不同的随机选择。这意味着在前两个日志中记录为人类和计算机选择的内容将与第三个日志(结果)不一致,因为它们拉取不同的随机字符串,这些字符串有时相同,但有时不相同(因为它们是随机的) 所以我想我的问题是:如何让随机选择在每次我在代码中调用它时都是相同的字符串 这是我的全部代码:Javascript 如何在每次代码迭代中调用随机函数时生成相同的随机字符串?,javascript,Javascript,我正在尝试建立一个石头,布,剪刀游戏,在命令行中玩。在代码的最后,我记录了3件事:人类选择,计算机选择(随机生成),然后是游戏结果,例如“你赢了!石头打败剪刀!” 问题在于,有时结果行根据人工和计算机选择返回正确的结果,但有时它会生成不同的结果语句,即使两个选择相同。e、 g.如果选择的是人类=摇滚和计算机=摇滚,它可能会在一次尝试中返回“这是一个平局!”,然后在另一次尝试中返回“你输了!纸赢了摇滚”,即使它仍然是摇滚对摇滚 我认为问题在于最后的3个console.log语句。首先,人类的选择在
<script>
//human selection
const humanPlay = "Rock";
//randomly select for computer
function computerPlay() {
computerOptions = ["Rock", "Paper", "Scissors"];
return computerOptions[Math.floor(Math.random() * computerOptions.length)];
}
//play a round of human selection vs random computer selection and return a win/loss/tie statement
function playRound(humanPlay, computerPlay) {
//tie conditions
if (humanPlay == computerPlay){
return "It's a tie!"
//human win conditions
} else if (
(humanPlay == "Rock" && computerPlay == "Scissors") ||
(humanPlay == "Scissors" && computerPlay == "Paper") ||
(humanPlay == "Paper" && computerPlay == "Rock")
) {
return "You Win!" + ` ${humanPlay}` + " beats" + ` ${computerPlay}` + "!";
//computer win conditions
} else {
return "You Lose!" + ` ${computerPlay}` + " beats" + ` ${humanPlay}` + "!"
}
}
console.log(humanPlay);
console.log(computerPlay());
console.log(playRound(humanPlay, computerPlay()));
</script>
//人类选择
const humanPlay=“摇滚”;
//计算机随机选择
函数computerPlay(){
计算机选项=[“石头”、“布”、“剪刀”];
返回computerOptions[Math.floor(Math.random()*computerOptions.length)];
}
//玩一轮人工选择与随机计算机选择,并返回赢/输/平声明
功能游戏厅(人机游戏、电脑游戏){
//平局条件
if(人机游戏==计算机游戏){
return“打成平局!”
//人类获胜的条件
}否则如果(
(humanPlay==“摇滚乐”和computerPlay==“剪刀”)||
(人类游戏==“剪刀”和计算机游戏==“纸”)||
(humanPlay==“纸上游戏”和computerPlay==“摇滚乐”)
) {
return“youwin!”+`${humanPlay}`+“beats”+`${computerPlay}`+“!”;
//计算机获胜条件
}否则{
return“youlose!”+`${computerPlay}`+“beats”+`${humanPlay}`+“!”
}
}
console.log(humanPlay);
console.log(computerPlay());
console.log(playRound(humanPlay,computerPlay());
您需要将调用computerPlay()的结果保存在变量中,否则程序每次都会计算一个新的随机数。我确实试过了,但我发现我做错了——我试着在编写时将函数存储在变量中,例如variable=computerPlay(){function here}代码>等等,但这不起作用。但是我现在看到我应该运行这个函数,然后将输出存储在一个变量中,例如computerPlay(){function here};让变量=computerPlay()
。现在可以工作了,非常感谢!