# 如何生成指定长度的不重复的随机数组?
/**
* 返回一个指定范围内的随机整数
* @param {number} min 最小值
* @param {number} max 最大值
*/
function getRandom(min, max) {
return Math.round(Math.random() * (max - min) + min)
}
/**
* 返回一个指定长度的,元素值在指定范围内的随机数数组
* @param {number} length 长度
* @param {number} min 最小值
* @param {number} max 最大值
* @param {Array<number>} result 初始化数组,长度不能大于目标长度
* @return {Array<number>}
*/
function getRandomArray(length, min, max, result) {
const range = max - min + 1
if (range < 1) throw new Error('Invalid range: Maximum must be bigger than minimum')
if (range < length) throw new Error('Invalid range: Range must be bigger than length')
if (result.length > length) throw new Error('Invalid target length: Target length must be bigger than initialization array length')
for (let index = 0; index < length; index++) {
result.push(getRandom(min, max))
}
result = [...new Set(result)]
if (result.length < length) return getRandomArray(length, min, max, result)
else return result
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32