發(fā)一個(gè)隨機(jī)紅包,40塊錢給10個(gè)人。每個(gè)人最多6塊錢。怎么分?用javascript怎么寫???
6 回答
已采納

ahao430
TA貢獻(xiàn)35條經(jīng)驗(yàn) 獲得超41個(gè)贊
Divide(10,40,6); function?Divide(p,m,a){ /*傳入人數(shù),總金額,單人上限*/ var?arr=[]; nm=m*100; na=a*100; /*乘100,便于運(yùn)算*/ l=p; /*每次遍歷后剩余人數(shù)*/ for(i=0;i<p-1;i++){ l--; arr[i]=roll(nm,l); /*傳入剩余金額及人數(shù)*/ nm-=arr[i]; /*剩余金額*/ } arr[p-1]=nm; /*最后一個(gè)人不用分*/ if(arr[p-1]>na){ return?Divide(p,m,a); } /*最后一個(gè)人如超過上限,重新分*/ return?arr.map(function(v,i,arr){ return?v=v/100; }); /*分好了,每個(gè)數(shù)重新除以100,輸出結(jié)果*/ /*定義隨機(jī)函數(shù),傳入剩余金錢和人數(shù)*/ function?roll(o,l){ var?b=o-l; /*每個(gè)人至少分1分錢*/ var?Max=Math.min(na,b); return?Math.ceil(Math.random()*Max); } }

nickylau82
TA貢獻(xiàn)128條經(jīng)驗(yàn) 獲得超67個(gè)贊
仔細(xì)想了一下,其實(shí)需要增加的邏輯判斷就是剩余的人數(shù)*6要大于剩余金額。否則就需要重新計(jì)算本次發(fā)的紅包。但是這個(gè)就不是真隨機(jī)了。。。太不公平了。。。