在多维数组中随机获取所有数字1-400

Dar*_*man -1 javascript arrays multidimensional-array

我试图在多维数组中列出1-400之间的所有数字.

我不想要任何重复的数字(1只会在数组中一次,18,100,385等等)我不希望这些数字完全按顺序排列,我希望它们被放置在随机位置的数组中..

示例(我从1-10手工制作):

    var pairs =[
         [3, 9],
         [6, 4],
         [2, 1],
         [5, 8],
         [7, 10],

         //... and up to
         [185, 400]
    ]
Run Code Online (Sandbox Code Playgroud)

那么,有没有办法让javascript自动创建这样的数组,但更大的数字呢?
谢谢你的帮助!

pid*_*pid 5

您可以使用标准的Fisher-Yates shuffle算法,如下所示:

function generateRandomPairs(numberOfPairs)
{
  var i, j, numbers, tmp, pairs;

  // fill array
  numbers = [];
  for (i = 0; i < numberOfPairs * 2; i++)
  {
    numbers[i] = i + 1;
  }

  // randomize array really good
  for (i = 0; i < numberOfPairs * 2 - 1; i++)
  {
    j = Math.floor(Math.random() * (numberOfPairs * 2 - i)) + i;
    // swap element i with element j
    tmp = numbers[i];
    numbers[i] = numbers[j];
    numbers[j] = tmp;
  }

  // transform linear array to pairs
  pairs = [];
  for (i = 0; i < numberOfPairs * 2; i += 2)
  {
    pairs.push([ numbers[i], numbers[i + 1] ]);
  }

  return pairs;
}
Run Code Online (Sandbox Code Playgroud)