js

js随机数生成且不重复的方法是什么

小亿
338
2023-12-16 10:59:31
栏目: 编程语言

生成不重复的随机数可以使用以下方法:

  1. 使用Math.random()函数生成随机数,然后乘以一个足够大的数,再取整,得到一个整数。
  2. 将生成的随机数存储在一个数组中,每次生成一个新的随机数时,可以遍历数组检查是否已存在该随机数,如果存在则重新生成。
  3. 可以使用Fisher-Yates算法,将数字从1到N按顺序放入一个数组中,然后随机交换数组中的元素,直到达到所需的随机数个数。
  4. 在生成随机数之前,创建一个包含所有可能随机数的数组,然后使用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算法随机交换数组中的元素,最后返回指定个数的随机数。

0
看了该问题的人还看了