js 随机红包算法

143 阅读1分钟

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);     
   },