当前位置:首页 > JavaScript

js实现抽奖号码

2026-02-03 08:38:20JavaScript

实现抽奖号码的JavaScript方法

生成随机号码

使用Math.random()生成随机数,结合Math.floor()确保结果为整数。例如生成1-100的随机号码:

js实现抽奖号码

const randomNumber = Math.floor(Math.random() * 100) + 1;

确保不重复抽奖

使用Set数据结构存储已抽中的号码,避免重复:

js实现抽奖号码

const drawnNumbers = new Set();
function drawUniqueNumber(max) {
  if (drawnNumbers.size >= max) return null;

  let num;
  do {
    num = Math.floor(Math.random() * max) + 1;
  } while (drawnNumbers.has(num));

  drawnNumbers.add(num);
  return num;
}

批量生成抽奖号码

需要生成多个不重复的抽奖号码时,可以使用Fisher-Yates洗牌算法:

function generateLotteryNumbers(total, max) {
  const pool = Array.from({length: max}, (_, i) => i + 1);

  for (let i = pool.length - 1; i > 0; i--) {
    const j = Math.floor(Math.random() * (i + 1));
    [pool[i], pool[j]] = [pool[j], pool[i]];
  }

  return pool.slice(0, total);
}

可视化展示结果

将生成的号码动态显示在页面上:

function displayNumbers(numbers) {
  const container = document.getElementById('lottery-results');
  container.innerHTML = numbers.map(num => 
    `<div class="lottery-number">${num}</div>`
  ).join('');
}

完整示例代码

<!DOCTYPE html>
<html>
<head>
  <style>
    .lottery-number {
      display: inline-block;
      width: 50px;
      height: 50px;
      margin: 5px;
      background-color: #ff4757;
      color: white;
      text-align: center;
      line-height: 50px;
      font-size: 24px;
      border-radius: 50%;
    }
  </style>
</head>
<body>
  <button id="draw-btn">抽奖</button>
  <div id="lottery-results"></div>

  <script>
    const drawnNumbers = new Set();

    document.getElementById('draw-btn').addEventListener('click', () => {
      const num = drawUniqueNumber(100);
      if (num) {
        drawnNumbers.add(num);
        displayNumbers([...drawnNumbers]);
      } else {
        alert('所有号码已抽完!');
      }
    });

    function drawUniqueNumber(max) {
      if (drawnNumbers.size >= max) return null;

      let num;
      do {
        num = Math.floor(Math.random() * max) + 1;
      } while (drawnNumbers.has(num));

      return num;
    }

    function displayNumbers(numbers) {
      const container = document.getElementById('lottery-results');
      container.innerHTML = numbers.map(num => 
        `<div class="lottery-number">${num}</div>`
      ).join('');
    }
  </script>
</body>
</html>

标签: 号码js
分享给朋友:

相关文章

js类实现

js类实现

使用类实现 JavaScript 功能 在 JavaScript 中,类(Class)是一种语法糖,基于原型继承机制。通过 class 关键字可以更直观地定义对象模板。 基本类定义 class…

js实现防洪

js实现防洪

防抖(Debounce)实现 防抖的核心思想是在事件触发后延迟执行回调函数,若在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口调整等场景。 function debounce(func,…

js实现求导

js实现求导

实现数值求导的方法 在JavaScript中实现求导通常采用数值方法,因为JavaScript不是符号计算语言。以下是常见的数值微分方法: 中心差分法 中心差分法提供较高精度的导数近似:…

js树实现

js树实现

树的基本概念 树是一种非线性的数据结构,由节点和边组成。每个节点包含一个值和指向子节点的引用。树的顶部节点称为根节点,没有子节点的节点称为叶节点。 树的实现方式 在JavaScript中,树可以通过…

js实现上传图片

js实现上传图片

使用HTML5的File API实现图片上传 HTML5的File API允许通过JavaScript访问用户选择的文件。需要创建一个文件输入元素,并监听其change事件。 <input t…

js 实现拖拽

js 实现拖拽

实现拖拽的基本步骤 在JavaScript中实现拖拽功能需要监听几个关键事件:mousedown、mousemove和mouseup。以下是实现的基本逻辑。 监听目标元素的mousedown事件,记…