为了账号安全,请及时绑定邮箱和手机立即绑定

发一个随机红包,40块钱给10个人。每个人最多6块钱。怎么分?用javascript怎么写啊?

发一个随机红包,40块钱给10个人。每个人最多6块钱。怎么分?用javascript怎么写啊?

发一个随机红包,40块钱给10个人。每个人最多6块钱。怎么分?用javascript怎么写啊?
查看完整描述

6 回答

已采纳
?
ahao430

TA贡献35条经验 获得超41个赞

Divide(10,40,6);

function Divide(p,m,a){
	/*传入人数,总金额,单人上限*/
	var arr=[];
	nm=m*100;
	na=a*100;
	/*乘100,便于运算*/
	l=p;
	/*每次遍历后剩余人数*/
	for(i=0;i<p-1;i++){
		l--;
		arr[i]=roll(nm,l);
		/*传入剩余金额及人数*/
		nm-=arr[i];
		/*剩余金额*/
	}
	arr[p-1]=nm;
	/*最后一个人不用分*/
	if(arr[p-1]>na){
		return Divide(p,m,a);
	}
	/*最后一个人如超过上限,重新分*/
	return arr.map(function(v,i,arr){
		return v=v/100;
	});
	/*分好了,每个数重新除以100,输出结果*/

	/*定义随机函数,传入剩余金钱和人数*/
	function roll(o,l){
		var b=o-l;
		/*每个人至少分1分钱*/
		var Max=Math.min(na,b);
		return Math.ceil(Math.random()*Max);
	}
}


查看完整回答
3 反对 回复 2016-07-25
?
nickylau82

TA贡献128条经验 获得超67个赞

仔细想了一下,其实需要增加的逻辑判断就是剩余的人数*6要大于剩余金额。否则就需要重新计算本次发的红包。但是这个就不是真随机了。。。太不公平了。。。

查看完整回答
反对 回复 2016-07-25
?
偶尔喝个小酒

TA贡献5条经验 获得超1个赞

用随机数每次生成的都小于6

查看完整回答
反对 回复 2016-07-25
  • 6 回答
  • 4 关注
  • 3204 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信