js如何让随机数不重复
时间: 2023-05-24 16:06:12 浏览: 51
可以使用一个数组来存储已经出现过的随机数,在生成新的随机数时,先判断该随机数是否已经在数组中出现过,如果是,则继续生成新的随机数,直到生成的随机数不在数组中出现过为止。
以下是一个示例代码:
```javascript
var usedNums = []; // 存储已经出现过的随机数
function getRandom() {
var num = Math.floor(Math.random() * 10); // 生成0~9之间的随机数
if (usedNums.indexOf(num) !== -1) { // 如果该随机数已经出现过,则继续生成新的随机数
return getRandom();
} else { // 如果该随机数没有出现过,则将其存储到数组中,并返回该随机数
usedNums.push(num);
return num;
}
}
// 使用示例:
for (var i = 0; i < 10; i++) {
console.log(getRandom());
}
```
运行结果类似于:
```
3
0
2
8
4
5
6
7
9
1
```
相关问题
js生成不重复的随机数
有很多方法可以生成不重复的随机数,其中一个常用的方法是使用Fisher–Yates shuffle算法,具体步骤如下:
1. 创建一个包含所有可能的随机数的数组。
2. 从数组中随机选择一个数,并把它与数组中最后一个数交换位置。
3. 从数组中剩下的数中再随机选一个数,并把它与倒数第二个数交换位置。
4. 重复上述步骤,直到只剩下一个元素。
这样生成的随机数序列是不重复的,而且每一个随机数的出现概率相等。在JS中可以这样实现:
```
function shuffle(array) {
for (let i = array.length - 1; i > 0; i--) {
const j = Math.floor(Math.random() * (i + 1));
[array[i], array[j]] = [array[j], array[i]];
}
}
const arr = Array.from({length: 100}, (_, i) => i + 1); // 生成一个包含所有可能的随机数的数组
shuffle(arr); // 打乱数组
console.log(arr); // 打印出不重复的随机数序列
```
js生成随机数组不重复的四个数
以下是生成随机数组不重复的四个数的 JavaScript 代码:
```javascript
// 生成一个包含1到10的数组
var arr = Array.from({length: 10}, (_, i) => i + 1);
// 随机打乱数组
arr.sort(() => Math.random() - 0.5);
// 取前四个数
var randomArr = arr.slice(0, 4);
console.log(randomArr); // 输出随机数组
```
这段代码首先生成一个包含1到10的数组,然后使用 `sort()` 方法随机打乱数组顺序,最后使用 `slice()` 方法取前四个数,从而生成随机数组不重复的四个数。