前言:前幾天寫到一個程序,用到要使用不一樣隨機數的方法,結果愣是整了半天沒整出來,說來也是慚愧啊(虧我仍是軟件工程的學生,其實這個問題之前遇到過,只是我逃避了,哎,本身刨的坑終究會把本身陷進去,╮(╯▽╰)╭)好了,廢話很少說「上菜」了數組
1 (function () { 2 3 var N = 20; 4 var arr = []; 5 var ranArr = []; 6 for (var i = 0; i < N; i++) { 7 arr[i] = i; 8 } 9 console.log(arr); 10 do { 11 var index = Math.floor(Math.random() * arr.length); 12 var flag = true; 13 ranArr.push(arr[index]); 14 arr.splice(index, 1); 15 if (arr.length == 0) { 16 flag = false; 17 } 18 } while (flag); 19 20 console.log(ranArr); 21 })();
解釋下代碼:代碼的主要思路是,先生成個0到N的數組,根據此數組的長度產生隨機數的最大值index,循環如下動做,設置標誌位flag,用於判斷arr數組的長度,每次循環把原數組index位置的數據加入到ranArr數組中去,arr數組切除這個數,直到arr數組長度爲0.dom