js随机抽奖一二三等奖不重复的抽奖逻辑怎么设置
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js随机抽奖一二三等奖不重复的抽奖逻辑怎么设置相关的知识,希望对你有一定的参考价值。
现有的抽奖逻辑如下
function randomLuckyArr()
Obj.luckyResult = [];
for (var i = 0; i < Obj.luckyNum; i++)
for (var j = 0; j < len; j++)
var random = Math.floor(Math.random() * personArray.length);
if (Obj.luckyResult.indexOf(random) == -1)
Obj.luckyResult.push(random)
else
i--;
<html>
<head>
<title>js随机抽奖一二三等奖不重复的抽奖逻辑怎么设置</title>
<meta charset="UTF-8" />
<script>
//添加一个随机函数
Math.rand = function(min, max)
function subRand(min, max)
min = min ? min : 0;
max = max ? max : 9;
var result = 0;
do
result = Math.random().toString().substr(2, 1);
while(!(result >= min && result <= max));
return result;
function getBit(maxBit)
maxBit = maxBit ? maxBit : max.toString().length;
var result = [],
count = 0;
for(var i = 0; i < maxBit; i++)
result.push(subRand());
if(i != 0 && result[i] == result[i - 1])
count++;
return maxBit - count;
min = min ? min : 0;
max = max ? max : 0;
var result = '',
bit = getBit();
do
result = '';
for(var i = 0; i < bit; i++)
result = result + subRand();
result = parseInt(result);
while(!(result >= min && result <= max));
return result;
//console.log(Math.rand(0, 100));
//LuckDraw 抽奖类 参数一 奖池数组, 参数二 中奖数量 返回 中奖索引
function LuckDraw(pool, numberOfWinners)
var results = [],
//是否已经中奖
isExists = function(index)
for(var i = 0; i < results.length; i++)
if(results[i] == index)
return true;
return false;
,
subLuckDraw = function()
do
result = Math.rand(0, pool.length - 1);
while(isExists(result));
return result;
for(var i = 0; i < numberOfWinners; i++)
results.push(subLuckDraw());
return results;
var pool = [
'关',
'张',
'赵',
'马',
'黄',
'曹老板'
];
winners = LuckDraw(pool, 3); //返回从奖池中 中奖的索引,假设123等奖都只有一名的话各取一个即可
//假设123等奖 一等奖 1名, 二等奖 2名, 三等奖 3名, 只需要调用这个函数第二个参数设置为总和 6 即可
//然后从结果中第一个索引为一等奖 23 索引为二等奖 , 456索引为 三等奖
console.log(winners);
</script>
</head>
<body>
<script>
for(var i = 0; i < winners.length; i++)
document.write(pool[winners[i]] + ' 恭喜你中了' + (i + 1) + '等奖<br />');
</script>
</body>
</html> 参考技术A 太专业了 普通人居多的我们是不会的但是我找到了可以不重复中奖的抽奖软件
全能抽奖导入名单就默认不重复了 很适合不太懂电脑的普通人们
Redis Set结构使用场景
1、抽奖 1)、用户参与抽奖:SADD order 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 2)、查看所有参与抽奖的人:SMEMBERS order 3)、重复抽奖每次抽取两人:SMEMBERS order 2 4)、不重复抽奖,三等奖3人,二等奖2人,一等奖1人 SPOP order 3 SPOP order 2 SPOP order 1 2、点赞、收藏、标签 1)、点赞的人:SADD like:1 1001 1002 1003 1004 1005 2)、取消点赞:SREM like:1 1002 3)、检查用户是否点赞过: SISMEMBER like:1 1002 SISMEMBER like:1 1005 4)、获取点赞人员列表:SMEMBERS like:1 5)、获取点赞总人数:SCARD like:1 3、关注模型 127.0.0.1:6379> SADD wangwu zhangsan lisi zhaoliu haoba (integer) 4 127.0.0.1:6379> SADD zhangsan lisi wangwu sijiu (integer) 3 127.0.0.1:6379> SADD lisi zhaoliu zhangsan qinshi (integer) 3 127.0.0.1:6379> SINTER wangwu zhangsan 1) "lisi" 127.0.0.1:6379> SISMEMBER zhangsan lisi (integer) 1 127.0.0.1:6379> SISMEMBER lisi zhangsan (integer) 1 127.0.0.1:6379> SISMEMBER zhaoliu zhangsan (integer) 0 127.0.0.1:6379> SISMEMBER haoba zhangsan (integer) 0 127.0.0.1:6379> SDIFF zhangsan wangwu 1) "sijiu" 2) "wangwu" 127.0.0.1:6379> SDIFF lisi wangwu 1) "qinshi"
以上是关于js随机抽奖一二三等奖不重复的抽奖逻辑怎么设置的主要内容,如果未能解决你的问题,请参考以下文章