如何在交换时随机化元素

时间:2017-12-02 10:32:55

标签: javascript arrays

我在这里有一个从数组中随机交换项目的函数;

const switch = function(array) {
   let switchArr = array.slice();

    for (let i = switchArr.length-1; i >=0; i--) {

        let randomIndex = Math.floor(Math.random() * (i+1)); 
        let itemAtIndex = switchArr[randomIndex]; 

        switchArr[randomIndex] = shuffledArr[i]; 
        switchArr[i] = itemAtIndex;
    }
    return switchArr;
  };

有人可以解释这段代码如何交换数组元素:

  let randomIndex = Math.floor(Math.random() * (i+1)); 
  let itemAtIndex = switchArr[randomIndex]; 


 switchArr[randomIndex] = shuffledArr[i]; 
  switchArr[i] = itemAtIndex;

让我们说我们有一个阵列:

let arrTest = [1,2,3,4,5];

基本上该功能将从i = 4开始(长度为5 - 1)   并循环直到i> = 0(4,3,2,1);

现在这一部分让我感到高兴:

 let randomIndex = Math.floor(Math.random() * (i+1)); 

MDN说,如果我们想要两个函数之间的随机函数,它必须是这样的:

  Math.floor(Math.random() * (max - min)) + min;

与我在那里看到的相反。它也有点令人困惑switchArr和   itemAtIndex交换项目。

我真的需要在每次迭代时进行类比,以便将这一点记在我的脑海中。

任何能够理解并解释这一点的人?

0 个答案:

没有答案