前言:前几天写到一个程序,用到要使用不一样随机数的方法,结果愣是整了半天没整出来,说来也是惭愧啊(亏我仍是软件工程的学生,其实这个问题之前遇到过,只是我逃避了,哎,本身刨的坑终究会把本身陷进去,╮(╯▽╰)╭)好了,废话很少说“上菜”了数组
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