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



我试着做一个小游戏,你必须猜猜电脑会选择哪个数字。更接近数字的选秀权应该获胜。现在我不知道如何编写一个比较值并选择更接近secretNumber值的 if/switch .

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

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!`)
};

取每个猜测和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');
}

您可以使用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

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

如果xy更接近n。那么从xn的距离必须小于从yn的距离。

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

因此,如果xy更接近n,那一定意味着以下内容也是正确的:

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!");
}

最新更新