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