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自动创建这样的数组,但更大的数字呢?
谢谢你的帮助!
您可以使用标准的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)