只是写出了自己认为的可以执行的程序,因为是随机生成的1-200内的数,所以程序可能在得到正确的五个数之前存在一定的运行时间。有好的思路欢迎评论纠正。
function getRandom(){//获取五个数的时候首先保证五个数的和不大于200,如果大于200,此数组就没有意义了,以此减少程序的运行次数
var obj = {};
var arr = [];
var add = 0;
for(var i = 0; i < 5;i++){
var random = Number(Math.ceil(Math.random(0,1)*190));
if(!obj[random]){
add += random;
if(add > 200){
i --;
add -= random;
}else{
arr.push(random);
obj[random] = 1;//确保随机数不重复
}
}else{
i --;
}
}
return arr;
}
function getAdd(){
var add = 0;
var arr = getRandom();
for(var i = 0 ;i < 5; i++){
add += arr[i];
}
if(add == 200){ //五个数的和为200的时候,输出数组
return arr;
}else{ //和不为200的时候重新获取随机数并得到五个数的和
getAdd();
}
}
var arr200 = getAdd();
console.log(arr200);