js产生不一样的随机数

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

 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