var arr=[400,453,334,45,345,354,353422,34324,324,234,100,150,150,150,150]; var times=0; function cul(arr){ times++; var result=0; var j=(Math.random()*6>>>0); //随机产生要加的数字个数 for(var i=0;i<j;i++){ if(arr[i]){ result+=parseInt(arr.splice(i,1),10); } } alert("第"+times+"次相加结果:"+result); if(arr.length>0){ cul(arr); } } cul(arr);以上应该满足楼主的要求了!
不能大于6但要最接近6 。是指随机相加的和?
那么数组是float的?var arr= [];
for(var i=0;i<20;i++)
arr.push(Math.random());
var sum=0;
var result =[];
var temp=[];
var index = 0;
for(var i=0;i<arr.length-1;i++)
{
sum+=arr[i];
temp.push(arr[i]);
if(i==arr.length-2 )
{
if(sum+arr[i+1]>=6){
result.push(temp.join("+")+"="+sum+"\n");
result.push(arr[i+1]+"="+arr[i+1]+"\n");
break;
}else{
sum+=arr[i];
temp.push(arr[i]);
result.push(temp.join("+")+"="+sum+"\n");
break;
}
}else
if(sum<6 &&sum+arr[i+1]>=6 )
{
result.push(temp.join("+")+"="+sum+"\n");
temp = [];sum=0;
}
}
var times=0;
function cul(arr){
times++;
var result=0;
var j=(Math.random()*6>>>0); //随机产生要加的数字个数
for(var i=0;i<j;i++){
if(arr[i]){
result+=parseInt(arr.splice(i,1),10);
}
}
alert("第"+times+"次相加结果:"+result);
if(arr.length>0){
cul(arr);
}
}
cul(arr);以上应该满足楼主的要求了!
这个应该能满足了,i<j变成i<j&&i<arr.length更好,不过张兄解释一下,为什么要var j=(Math.random()*6>>>0);
>>>0的作用是?
function cul(arr){
var result=0;
arr.sort(function(a,b){return b-a;}); //从大到小排序
for(var i=0;i<arr.length;i++){
if(parseInt(arr[i],10)<=600){//只相加<=600的数
result+=parseInt(arr[i],10);
}
}
alert(result);
}
cul(arr);
arr=[400,100,200,200,200]就先要把后面的三个200相加,然后加前面的400和100,要求返回相加的和跟相加这个和的数组。还是要非常谢谢楼上
想问下为什么下面arr.sort(function(a,b){return b-a;}); //从大到小排序可以让数组从大到小排序?