为什么我的 Math.random 函数总是返回相同的值



我正在制作一个石头,纸,剪刀的游戏,计算机对玩家做出随机选择。我创建了一个函数,该函数将随机选择一个数字(0,1或2(,然后根据该数字返回石头,纸或剪刀的值。结果,我只能得到"纸"。

function getComputerChoice() {
  Math.floor(Math.random() * 3);
  if (0) {
    return 'rock';
  }
  else if (1) {
    return 'paper';
  }
  else if (2) {
    return 'scissors';
  }
}
console.log(getComputerChoice());

Expected: 0, 1, or 2
Actual result: always 1

你正在做Math.floor(Math.random() * 3)但随后扔掉了结果。然后在if语句中,你测试数字0是否为真(事实并非如此(,然后测试数字1是否为真(事实为真(,因此始终返回纸张。要修复它,您需要将随机数保存到一个变量中,然后将该变量与 if 语句中可能的数字进行比较。

您需要捕获然后评估Math.floor(Math.random() * 3);的结果 像这样:

function getComputerChoice() {
  let random_pick = Math.floor(Math.random() * 3);
  if (random_pick == 0) {
    return 'rock';
  }
  else if (random_pick == 1) {
    return 'paper';
  }
  else {
    return 'scissors';
  }
}
console.log(getComputerChoice());

最新更新