在1到200中隨機抽五個數,要求五個數之和是200
阿新 • • 發佈:2018-12-29
只是寫出了自己認為的可以執行的程式,因為是隨機生成的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);