js 随机红包算法

1.经过一天多的时间,踏过无数bug与辛酸,最终在这个阳光明媚的清晨,突然灵机一动就写出来了,意外惊喜往往都是来得如此突然,所以任何时候,都不要放弃,加油!!!

// 生成剩余金额(随机红包算法)
	randownMoney:function(){
		
		// 填写的总额
		var totalMoney=0;
		// 剩余总额
		var dediMoney=0;
		// 未填数组
		var dediList = new Array();
		
	
		for (var i = 0; i < $("#redPackegeNumber").val(); i++) {
			var n =i*1+1;
			
			if($(".redPackgeMoneytwo"+n+"")[3].value==0){
				dediList.push(".redPackgeMoneytwo"+n+"");
			}else{
				totalMoney=formatFloat(totalMoney,2)+formatFloat($(".redPackgeMoneytwo"+n+"")[3].value,2);
			}
		}
		
		dediMoney=$("#redPackgeMoney").val()-totalMoney
		
		if((formatFloat(dediMoney,2))/(dediList.length)<0.01){
			layui.layer.alert("金额无法均分");
			return ;
		}
		
		//未填红包生成算法
		if(dediList.length>0&&dediMoney>0){
			for (var i = 0; i < dediList.length; i++) {
				var n =i*1+1;
				if($(dediList[i])[3].value==0&&dediMoney>0&&n<dediList.length){
					// 随机金额  范围[0,   (剩余金额-剩余红包数量*红包最小分配金额   之内的随机数)  )
					var rd=formatFloat(Math.random()*(dediMoney-0.01*(dediList.length-n)),2);
					if(rd<0.01){
						rd=0.01;
					}
					$(dediList[i])[3].value=rd;
				}else{
					$(dediList[i])[3].value=formatFloat(dediMoney,2);
				}
				dediMoney=formatFloat(dediMoney-$(dediList[i])[3].value,2);
			}
			
		}else{
			layui.layer.alert("都有数据或数据已满,无法生成");
		}
		
	},
//保留两位小数 四舍五入
formatFloat : function(src,pos){     
        return Math.round(src*Math.pow(10, pos))/Math.pow(10, pos);     
   },

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

浮生若梦l

你的鼓励实我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值