浅浅记录下:用js如何实现一个抢红包算法,内容主要借鉴javascript实现仿微信抢红包
用js如何实现一个抢红包
/**
* @param {number } money 总共发多少红包
* @param {number } count 红包个数
* @param {number } minBase 红包最少发多少
* @param {number } maxBase 红包最多不能超过平均的几倍
*/
function redPacket({ money, count, minBase = 0.1, maxBase = 2 }) {
let remainMoney = money;
let ans = [];
for (let i = 0; i < count - 1; i++) {
let max = (remainMoney / count) * maxBase; // 最多不能超过平均的2倍
let curMon = Math.random() * max;
curMon = curMon < minBase ? minBase : curMon;
curMon = Math.floor(curMon * 100) / 100;
remainMoney = Math.round((remainMoney - curMon) * 100) / 100;
ans.push(curMon);
}
// 最后一个剩余红包
ans.push(remainMoney);
console.log(
ans,
ans.reduce((a, b) => Number(a) + Number(b)),
);
}
redPacket({
money: 20,
count: 4,
}); // [8.67, 3.73, 1.42, 6.18] 20