js 实现微信红包算法

微信红包算法
5块钱生成五个红包,要注意的有
1、生成5个随机数
2、5个随机数加起来必须等于5
3、红包要设置最小值 如最小值不能小于0.01
4、红包要设置最大值,如果第一个红包为5,剩下四个红包没法分,这里设置最大值为4.9
5、处理金额的浮点数,两位小数

下面是代码

var RedPackage = function (money, num) {
//  Num 数量 arr 红包数组 all 红包总金额  money 剩余金额
      var money = money, Num = num, arr = [], all = money,num2=parseFloat(money/2).toFixed(2)
      for (var i = 1; i < Num; i++) {
        var n1 = parseFloat(Math.random() * money).toFixed(2)
        if (n1 < 0.01) { //处理最小值
          n1 = '0.01'
        }
        if (n1 > num2) {  //处理最大值
          n1 = num2
        }
        arr.push(n1)
        money = money - n1
        if (i == Num - 1) {
          let sum = 0;
          for (let i = 0; i < arr.length; i++) {
            sum += Number(arr[i])
          }
          last = parseFloat(all - sum).toFixed(2)
          arr.push(last)
        }
      }
      console.log(arr) // 红包的随机数
      console.log(eval(arr.join('+')))
    }

1、传入的值是金额和红包数量,
2、用一个循环依次生成红包,
3、生成第一个红包n1 为小于总金额的一个随机数,保留两位小数,最大值最小值判断
4、剩余金额money1为 红包总金额减去第一个红包金额n1
5、生成第二个红包n2为小于剩余金额money1的一个随机数,保留两位小数,最大值最小值判断
6、剩余金额money2为 红包总金额减去红包金额n1,n2
7、依次类推,当剩余最后一个红包是不需要再循环,最后一个红包的值为,总金额all减去其他红包之和。

写在最后,欢迎大家留言~~

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值