题目一:随机排列数组
数组重新随机排列,概率相等,不能重复出现
第一步,我们既然要随机排列,所以怎能少了 Math.random()
这个重要的函数呢?
编写一个获取 [x, y) 区间随机数的整函数
function getRandom(max, min = 0) {
return Math.floor(Math.random() * (max - min) + min);
}
第二步 编写我们主要的处理函数
function randomArr(arr) {
let res = [];
let len = arr.length;
for(let i = 0; i < len; i++) {
let index = getRandom(arr.length);
res[i] = arr[index];
arr.splice(index, 1);
}
}
总结
其实这道题整体来说不难,主要注意两个点
- 随机 index 的获取(随机获取是有可能会重复的)
- index对应的值不能重复,那我们就需要操作下 arr,已经用过的值需要丢弃,保证后续操作的得到的值不与前面重复