实现一个微信红包算法

41 阅读1分钟

实现


  // 红包总金额
  let money   = 100;  
  // 红包个数
  let maxSize = 20;   
   // 结果集
  let result=[];           

  while ( maxSize > 1 ) {
    // 最大金额为剩余红包量的2倍, 如果不乘以2,最后的几个红包系数就会比较大, 如果乘的系数过大就会生成负数
    let max    = money / maxSize*2
    // 产生一个随机金额
    let value  = Math.random() * max
    // 每生成一个红包,需要从总金额中减去
    money      = money - value

    result.push(value.toFixed(2))

    --maxSize

  }

  result.push(money.toFixed(2))

  console.log(result )

结果

图片解析失败