javascript - 如何在javascript中为该范围内的每个数字获取特定范围内的唯一随机整数?

标签 javascript random

我有:

function getRandomInt(min, max){
        return Math.floor(Math.random() * (max - min + 1)) + min;
}

但问题是我想随机化数组中元素的数量(因此它们每次在我填充的东西中不会以相同的顺序出现),所以我需要确保返回的数字与到目前为止的其他数字。

所以代替:

   for(var i = 0; i < myArray.length; i++) {

   }

我有:

var i;
var count = 0;
while(count < myArray.length){
  count++;
  i = getRandomInt(0, myArray.length); // TODO ensure value is unique

  // do stuff with myArray[i];
}

最佳答案

看起来您想要的是集合 {1, 2, 3, ..., N} 的随机排列,而不是独立的均匀随机数。我认为有一个数组的 shuffle 方法可以为您做到这一点。

<小时/>

根据要求,这里是代码示例:

function shuffle(array) {
  var top = array.length;
  while (top--) {
      var current = Math.floor(Math.random() * top);
      var tmp = array[current];
      array[current] = array[top - 1];
      array[top - 1] = tmp;
    }
  return array;
}

关于javascript - 如何在javascript中为该范围内的每个数字获取特定范围内的唯一随机整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6557436/

相关文章:

javascript - 切换菜单在导航栏 Angular 2 内关闭

java - 尝试使用随机生成器设置简单的加法序列

javascript - x 轴上的时间显示从当前时间算起的最后 24 小时

javascript - 如何创建 Angular 1.x "plugin"?

javascript - 从视频帧在 Canvas 中绘制图像改变色调

java - 用 Java 改变你自己的答案

java - Java 中的负界

使用 R 按标准将数据随机拆分为训练数据集和测试数据集

c - 给定一个 32 位无符号随机数,如何在一定范围内操作值 [low, high]?

javascript - pnpm 不解析依赖关系