发一个随机红包,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);
}
}
nickylau82
TA贡献128条经验 获得超67个赞
仔细想了一下,其实需要增加的逻辑判断就是剩余的人数*6要大于剩余金额。否则就需要重新计算本次发的红包。但是这个就不是真随机了。。。太不公平了。。。
添加回答
举报
0/150
提交
取消
