javascript - 如何随机化(洗牌)JavaScript 数组?

标签 javascript arrays random shuffle

我有一个这样的数组:

var arr1 = ["a", "b", "c", "d"];

我怎样才能随机化/随机化它?

最佳答案

事实上的无偏洗牌算法是 Fisher-Yates (aka Knuth) Shuffle .

你可以看到一个great visualization here (和原帖linked to this)

function shuffle(array) {
  let currentIndex = array.length,  randomIndex;

  // While there remain elements to shuffle.
  while (currentIndex != 0) {

    // Pick a remaining element.
    randomIndex = Math.floor(Math.random() * currentIndex);
    currentIndex--;

    // And swap it with the current element.
    [array[currentIndex], array[randomIndex]] = [
      array[randomIndex], array[currentIndex]];
  }

  return array;
}

// Used like so
var arr = [2, 11, 37, 42];
shuffle(arr);
console.log(arr);

更多信息 about the algorithm用过。

关于javascript - 如何随机化(洗牌)JavaScript 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56233249/

相关文章:

python - 对列表中的第一项进行优先排序(随机和概率分布)

javascript - Node.js npm install express 无法从注册表中获取

javascript - 如何从 Facebook 群组获取我所有帖子的列表

javascript - 在 Ember 集成测试期间调试渲染的 HTML 和代码

arrays - bash 中大于 32767 的数组中的随机元素

c++ - 编译时对 std::array 的引用大小不可用

c++ - 我应该使用多少个随机数生成器?

javascript - v-bind 没有检测到数组内容的变化(vue js)

android - String[] Array 通过Intent 到另一个Activity(Main activity extends fragment class)

algorithm - 超简单的伪随机数生成算法