当前位置 : 主页 > 网络编程 > JavaScript >

lotto.js

来源:互联网 收集:自由互联 发布时间:2021-06-28
lotto.js //基于权重实现的抽奖//-------------------------------------------------------------------------------------------////如1的权重为1,则在数组中插入1个1,2的权重为2,则插入两个2。再对数组[1,2,2]进
lotto.js
//基于权重实现的抽奖
//-------------------------------------------------------------------------------------------//
//如1的权重为1,则在数组中插入1个1,2的权重为2,则插入两个2。再对数组[1,2,2]进行随机拿去,就能实现基于权重的随机数了。

//如果需求是奖池类型的,对每个奖品的获取数量是有限的,超过限制的默认为鼓励奖的话。可以这样去实现:

//当前二等奖中奖率 = 当前中二等奖奖品总数 / 当前抽奖总数  
//if(当前二等奖中奖率 < 配置概率)  
// 可以中二等奖奖品  
//else  
// 二等奖奖品已经中完,默认给中安慰奖

//例:
// 当前中二等奖奖品总数: 26
// 当前抽奖总数:87
// 当前二等奖中奖率 = 26 / 87 = 0.2988 = 29.88%
//0.2988 < 0.3
// 结果:中奖

function weightRandom(curValue) {
    var randomConfig = [{ id: 1, weight: 2 }, { id: 2, weight: 1 }];
    var randomList = [];
    for (var i in randomConfig) {
        for (var j = 0; j < randomConfig[i].weight; j++) {
            randomList.push(randomConfig[i].id);
        }
    }
    var randomValue = randomList[Math.floor(Math.random() * randomList.length)];
    if (curVal != 0) {
        while (randomValue == curVal) {
            randomValue = randomList[Math.floor(Math.random() * randomList.length)];
        }
    }
    return randomValue;
};
网友评论