1. 程式人生 > >在1到200中隨機抽五個數,要求五個數之和是200

在1到200中隨機抽五個數,要求五個數之和是200

只是寫出了自己認為的可以執行的程式,因為是隨機生成的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);