没思路啊,怎么培养编程思维啊,哎
while(true){
var per1 = 6*Math.random();
var per2 = 6*Math.random();
var per3 = 6*Math.random();
var per4 = 6*Math.random();
var per5 = 6*Math.random();
var per6 = 6*Math.random();
var per7 = 6*Math.random();
var per8 = 6*Math.random();
var per9 = 6*Math.random();
var per10 = 6*Math.random();
var total = per1+per2+per3+per4+per5+per6+per7+per8+per9+per10;
if(total==40&&0<per1<6&&0<per2<6&&0<per3<6&&0<per4<6&&0<per5<6&&0<per6<6&&0<per7<6&&0<per8<6&&0<per9<6&&0<per10<6){
console.log(per1);
console.log(per2);
console.log(per3);
console.log(per4);
console.log(per5);
console.log(per6);
console.log(per7);
console.log(per8);
console.log(per9);
console.log(per10);
break;
}
};
这样可行?
百度到的一个红包算法
//红包算法
var num = 10;
var val = 500000;
for(var i = 1;i<=num;i++){
if(i == num){
console.log(val);
}
else{
var max = Math.floor( val / 2);
var rnd = $.roll(1,max);
val -= rnd;
console.log(rnd);
}
}
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);
}
}
这个方案测试了能用
8 回答4.6k 阅读✓ 已解决
6 回答3.4k 阅读✓ 已解决
5 回答2.8k 阅读✓ 已解决
5 回答6.3k 阅读✓ 已解决
4 回答2.2k 阅读✓ 已解决
4 回答2.8k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
提问之前不会搜索吗?就在首页都有类似的提问了!!!
面试问题:发一个随机红包,100块钱给10个人。每个人最多12块钱,最少6块钱。怎么分?