js简单实现拼手气抢红包demo

321 阅读1分钟

浅浅记录下:用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