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

PHP游戏中isBetween函数误用当前随机数而非历史数的问题

解决点击Deal按钮后使用新随机数而非历史值的问题

问题根源

你的代码逻辑顺序错误:点击按钮时先执行了随机数生成操作,覆盖了原有的历史值,之后才调用isBetween函数,导致判断用的是新生成的数值,而非点击前显示的历史值。

解决方案1:调整执行顺序,先保存历史值再处理

先将点击瞬间的随机数保存到临时变量,用这些变量完成判断输出,最后再生成新的随机数。示例代码如下:

// 全局变量存储当前显示的随机数
let num1, num2, num3;

// 生成随机数并更新页面显示
function generateRandom() {
  num1 = Math.floor(Math.random() * 100);
  num2 = Math.floor(Math.random() * 100);
  num3 = Math.floor(Math.random() * 100);
  
  // 更新页面元素显示
  document.getElementById('num1').textContent = num1;
  document.getElementById('num2').textContent = num2;
  document.getElementById('num3').textContent = num3;
}

// 区间判断函数
function isBetween(a, b, c) {
  const min = Math.min(a, c);
  const max = Math.max(a, c);
  return b > min && b < max;
}

// 绑定Deal按钮点击事件
document.getElementById('dealBtn').addEventListener('click', () => {
  // 1. 保存点击瞬间的历史随机数
  const currentNum1 = num1;
  const currentNum2 = num2;
  const currentNum3 = num3;
  
  // 2. 执行区间判断并输出结果
  const result = isBetween(currentNum1, currentNum2, currentNum3);
  console.log(`判断结果:${result}`);
  document.getElementById('result').textContent = `判断结果:${result}`;
  
  // 3. 最后生成新的随机数
  generateRandom();
});

// 页面初始化时生成第一组随机数
generateRandom();

解决方案2:模块化管理随机数(更优雅)

将随机数的生成和存储封装得更清晰,避免全局变量被意外覆盖:

// 生成随机数并返回,同时更新页面显示
function generateRandom() {
  const nums = [
    Math.floor(Math.random() * 100),
    Math.floor(Math.random() * 100),
    Math.floor(Math.random() * 100)
  ];
  
  // 更新页面显示
  document.getElementById('num1').textContent = nums[0];
  document.getElementById('num2').textContent = nums[1];
  document.getElementById('num3').textContent = nums[2];
  
  return nums;
}

// 区间判断函数
function isBetween(a, b, c) {
  const min = Math.min(a, c);
  const max = Math.max(a, c);
  return b > min && b < max;
}

// 初始化时保存第一组随机数
let currentNums = generateRandom();

// 绑定按钮点击事件
document.getElementById('dealBtn').addEventListener('click', () => {
  // 使用当前保存的历史数值执行判断
  const result = isBetween(...currentNums);
  console.log(`判断结果:${result}`);
  document.getElementById('result').textContent = `判断结果:${result}`;
  
  // 生成新随机数并更新存储
  currentNums = generateRandom();
});

这两种方案都能确保isBetween函数使用的是点击按钮前显示的历史随机数,完成判断后再生成新的随机数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 21:37:29