需求:
见摘要
思路:
既然最少要6块钱,那就先给每人发600分,还剩下4000分。创建相关数组:
var res = [600,600,600,600,600,600,600,600,600,600];
剩下4000分怎么分呢? 开始给10个从头添加呗,万一添加的过多怎么办呢 ?限制最多不能超过啊?如何控制呢生成一个[0,1200-current]当前区间的添加值!具体如何生成详见实现。如果,一轮循环之后还没有分完,接着进行下一轮的操作。直到剩下的钱分完了为止!
具体实现:
<script>
(function(){
/**
* 随机相关整数范围
*/
function range(min,max){
num = Math.random();
ran = parseInt(Math.floor(num*(max-min+1)))+min;
return ran;
}
/**
* 判断总金额是否已经分完
*/
function finished(left){
if(left<=0) return true;
return false;
}
var res=[600,600,600,600,600,600,600,600,600,600];
var ran;
var left=3000;
for(var i=0;;i++){
j=i%10;
// 保证每十次是一个循环且是重复的一轮的自I技能的重新划分
if(res[j]>=1200) continue;
ran = range(0,1200-res[j]);
left = left - ran;
if(finished(left)){
res[j]+=(left+ran);
// 如果此次的随机的数字已经超过了最后的剩余的金额的话,则把最后的金额分给本次的循环的人
break;
}
res[j]+=ran;
}
document.write(res);
document.write("<br>");
var total =0;
for(i in res){
total+=res[i];
}
document.write(total);
})()
</script>