猿问

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

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

慕前端2813051
浏览 3205回答 6
6回答

ahao430

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

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

偶尔喝个小酒

用随机数每次生成的都小于6
随时随地看视频慕课网APP
我要回答