You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript函数预期返回随机值却始终输出相同结果问题

问题原因

你在全局作用域声明computerSelection变量时,仅执行了一次computerPlay()生成随机值,后续全程复用该固定值,不会重新生成随机结果。game()函数中没有重新调用computerPlay()的逻辑,自然每次调用playRound都拿到相同的参数。

修复方案

将computerSelection的生成逻辑移到每轮对局前执行,每一轮都单独调用一次computerPlay()获取新的随机值,不要复用全局声明的固定变量。修正后代码如下:

function computerPlay() {
  const plays = ["rock", "paper", "scissors"];
  return plays[Math.floor(Math.random() * plays.length)];
};

function playRound(playerSelection, computerSelection) {
  if (playerSelection.toLowerCase() === 'rock' && computerSelection === 'paper') {
    console.log('paper beat rock')
    return ('paper beats rock')
  } else if (playerSelection.toLowerCase() === 'rock' && computerSelection === 'rock') {
    console.log('its a tie, try again!')
    return ('its a tie, try again!')
  } else if (playerSelection.toLowerCase() === 'rock' && computerSelection === 'scissors') {
    console.log('rock beats scissors')
    return ('rock beats scissors')
  } else {
    console.log('wut')
  }
};

function game() {
  const playerSelection = "Rock";
  // 每轮对局前重新生成电脑的选择
  playRound(playerSelection, computerPlay());
  playRound(playerSelection, computerPlay());
};

// 调用测试
game();

内容的提问来源于stack exchange,提问作者rachel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 04:45:03