生成不重复的随机数可以使用以下方法:
- 使用Math.random()函数生成随机数,然后乘以一个足够大的数,再取整,得到一个整数。
- 将生成的随机数存储在一个数组中,每次生成一个新的随机数时,可以遍历数组检查是否已存在该随机数,如果存在则重新生成。
- 可以使用Fisher-Yates算法,将数字从1到N按顺序放入一个数组中,然后随机交换数组中的元素,直到达到所需的随机数个数。
- 在生成随机数之前,创建一个包含所有可能随机数的数组,然后使用splice()函数从数组中随机移除一个元素,即得到一个不重复的随机数。
下面是使用Fisher-Yates算法生成不重复随机数的示例代码:
function generateRandomNumbers(n) { var numbers = []; for (var i = 1; i <= n; i++) { numbers.push(i); } for (var i = n - 1; i >= 0; i--) { var j = Math.floor(Math.random() * (i + 1)); var temp = numbers[i]; numbers[i] = numbers[j]; numbers[j] = temp; } return numbers.slice(0, n); } var randomNumbers = generateRandomNumbers(10); // 生成10个不重复的随机数 console.log(randomNumbers);
该代码生成一个包含1到N的整数的数组,然后使用Fisher-Yates算法随机交换数组中的元素,最后返回指定个数的随机数。