如何选择最接近随机数的整数?

时间:2019-10-10 09:16:47

标签: javascript if-statement integer compare

如果您不得不猜测计算机会选择哪个数字,我尝试制作一个小游戏。接近数字的选秀权将获胜。现在,我不知道如何编写一个if / switch来比较这些值并选择一个更接近secretNumber的值。

这是我当前用于评估谁获胜的代码。如您所见,我只能与编号与秘密编号完全相同的获胜者合作。

    if (user1Guess == user2Guess && user1Guess == secretGuess) {
        console.log(`TIE!`)
    } else if (user1Guess == secretNumber && user2Guess !== secretNumber){
        console.log(`Player 1 wins!`)
    } else if (user1Guess !== secretNumber && user2Guess == secretNumber) 
        {
        console.log(`Player 2 wins!`)
    };

3 个答案:

答案 0 :(得分:1)

取每个猜测与secretNumber之间的差的绝对值。最接近的猜测将是差异较小的猜测:

const user1Diff = Math.abs(user1Guess - secretGuess);
const user2Diff = Math.abs(user2Guess - secretGuess);
if (user1Diff === user2Diff) {
  console.log('Tie');
} else if (user1Diff > user2Diff) {
  console.log('Player 2 wins');
} else {
  console.log('Player 1 wins');
}

答案 1 :(得分:0)

您可以使用Math.abs()来获得用户猜测之间的差异,而可以使用secretNumber来比较并确定谁获胜。

希望此摘要有帮助:

const user1Guess = Math.floor(Math.random() * 100) + 1, // Random number between 1-100 to mock user input
  user2Guess = Math.floor(Math.random() * 100) + 1, // Random number between 1-100 to mock user input
  secretNumber = Math.floor(Math.random() * 100) + 1, // Random number between 1-100 to mock computer pick
  user1Diff = Math.abs(user1Guess - secretNumber),
  user2Diff = Math.abs(user2Guess - secretNumber);

if (user1Diff === user2Diff) {
  console.log(`TIE!`)
} else if (user1Diff < user2Diff) {
  console.log(`Player 1 wins!`)
} else if (user1Diff > user2Diff) {
  console.log(`Player 2 wins!`)
} else {
  console.log(`You broke the game, congrats!`)
}

顺便说一句,您在第一个if语句中输入错误:secretGuess必须为secretNumber

答案 2 :(得分:0)

让我们考虑一下猜猜更接近意味着什么。

如果xn更靠近y。那么从xn的距离必须小于从yn的距离。

对于数字,从xn的距离为abs(n - x),即差的绝对值。绝对值始终为非负数。例如,-3的绝对值为3

因此,如果xn更接近y,那必须表示以下情况也成立:

Math.abs(n - x) < Math.abs(n - y)

然后可以在if语句条件中使用它们。

const user1Distance = Math.abs(secretNumber - user1Guess);
const user2Distance = Math.abs(secretNumber - user2Guess);

if (user1Distance === user2Distance) {
    console.log("TIE!");
} else if (user1Distance < user2Distance) {
    console.log("Player 1 wins!");
} else {
    console.log("Player 2 wins!");
}