您的位置:首页 > Web前端 > JavaScript

40元红包发10个人,每个人最多发6块解决方案。

2016-07-25 10:50 302 查看
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);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  javascript