当前位置:首页 > JavaScript

js实现抽奖号码

2026-02-03 08:38:20JavaScript

实现抽奖号码的JavaScript方法

生成随机号码

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

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

确保不重复抽奖

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

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

可视化展示结果

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

js实现抽奖号码

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防抖和节流实现

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

js 实现分页

js 实现分页

实现分页的基本逻辑 分页功能通常需要后端返回数据总量或总页数,前端根据当前页码和每页条数截取对应数据。以下是一个基于JavaScript的简单分页实现方案: 前端分页实现 假设已有从后端获取的完整数…

js实现报表

js实现报表

使用JavaScript实现报表 在JavaScript中实现报表功能可以通过多种方式完成,常见的方法包括使用原生JavaScript、第三方库(如Chart.js、D3.js)或结合后端数据渲染。以…

js实现点击显示和隐藏

js实现点击显示和隐藏

实现点击显示和隐藏的JavaScript方法 使用classList.toggle切换类名 通过添加/移除CSS类控制元素的显示与隐藏,需提前在CSS中定义隐藏样式(如display: none)。…

js实现选题

js实现选题

实现选题功能的JavaScript方法 基础实现方案 使用数组存储选项,通过随机索引选取: const options = ['选项A', '选项B', '选项C', '选项D']; const r…

js实现投球

js实现投球

实现投球动画的基本思路 使用JavaScript和CSS动画结合的方式模拟投球效果。核心是通过改变元素的位置、旋转和缩放属性,配合定时器或CSS过渡实现平滑动画。 创建基础HTML结构 <…