目前代码可以实现随机产生数字,我想加一个数组用来保存抽中的号码 下次产生随机数的时候检查数组中是否存在 不存在才能显示在页面,js代码如下:
var g_Interval = 1;
var g_PersonCount = 150;//参加抽奖人数
var g_Timer;
var running = false;
var ary= [];//声明空数组用来保存抽中的号码
var num;
function beginRndNum(trigger){
if(running){
running = false;
clearTimeout(g_Timer);
$(trigger).val("开始");
$('#ResultNum').css('color','red');
updateRndNum()
console.log(ary);
}
else{
running = true;
$('#ResultNum').css('color','black');
$(trigger).val("停止");
beginTimer();
}
}
function updateRndNum(){
var num = Math.floor(Math.random()*g_PersonCount+1);//随机生成一个数
ary.push(num);
$('#ResultNum').html(num);
}
function beginTimer(){
g_Timer = setTimeout(beat, g_Interval);
}
function beat() {
g_Timer = setTimeout(beat, g_Interval);
updateRndNum();
}
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
这个其实很简单
假设你们有20个人,先生成一个数组[],数组里面可能存放的是员工号
1,然后生成随机范围在 1-20 内的随机数,这个数作为数组的下标,取出这个下标对应的数作为中奖号码,数组内删除这个下标,数组长度变成19
2,然后生成随机范围在 1-19 内的随机数,这个数作为数组的下标,取出这个下标对应的数作为中奖号码,数组内删除这个下标,数组长度变成18
....
结束
当然这个算法是有名字的
Fisher-Yates shuffle算法你每次生成数字后,检测数字是否包含在ary里,若包含,就再次随机生成,不包含,就把数字push进ary里。
最简单的检测就是循环数组比较。
像这种其实最好给后端做,前端负责显示就好了。
请输入代码find、 indexOf方法都可以实现 建议去看一下,只用别人的代码,不懂其中的意思没什么用下次还是要查,加油