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

时间:2019-06-09 00:10:28

标签: javascript

我正在做石头,纸,剪刀的游戏,计算机会随机选择玩家。我创建了一个函数,该函数将随机选择一个数字(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

2 个答案:

答案 0 :(得分:3)

您正在做Math.floor(Math.random() * 3),但随后扔掉了结果。然后在您的if语句中,测试数字0是否为真(不是),然后测试数字1是否为真(是),因此总是回纸。要解决此问题,您需要将随机数保存到变量中,然后将变量与if语句中的可能数字进行比较。

答案 1 :(得分:0)

您需要捕获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());