You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

41 lines
1.1 KiB
JavaScript

1 year ago
function choujiang(prizes) {
var prizeList = [] //按照权重分解后的奖品数组
prizes.map(function(item){
prizeList.push({
...item
})
for(var i=0; i< item.gailv; i++) {
prizeList.push({
...item
})
}
});
prizeList = reset(prizeList);
// 范围随机数
function randomFrom(lowerValue, upperValue) {
return Math.floor(Math.random() * (upperValue - lowerValue + 1) + lowerValue);
};
// 随机打乱数组
function reset(arr) {
var eachArr = arr.concat([])
var lastArr = []
function deepEach(deepArr) {
if (deepArr.length) {
var randomIndex = randomFrom(0, eachArr.length - 1)
lastArr.push(eachArr[randomIndex])
eachArr.splice(randomIndex, 1)
deepEach(eachArr)
}
}
deepEach(eachArr)
return lastArr
}
this.getResult = function() {
var random = randomFrom(0, prizeList.length - 1);
return prizeList[random]
}
}
export default choujiang;