Javascript 大型阵列的慢速洗牌
我正在Photoshop脚本中实现Fisher-yates shuffle。我想从最多99999个元素中创建一个包含Javascript 大型阵列的慢速洗牌,javascript,random,shuffle,ecmascript-5,photoshop-script,Javascript,Random,Shuffle,Ecmascript 5,Photoshop Script,我正在Photoshop脚本中实现Fisher-yates shuffle。我想从最多99999个元素中创建一个包含n唯一随机元素的数组。其中n是一个较小的值,但可以达到最大值 如果最大值不超过1000,则可以(以毫秒为单位)运行,但10000(约20秒)的运行速度要慢得多 有没有更好/更快的方法?请记住,它需要在ECMAScript中 var maxNumber = 99; var numToGenerate = 5; var bigShuffle = shuffle(maxNumber
n
唯一随机元素的数组。其中n
是一个较小的值,但可以达到最大值
如果最大值不超过1000,则可以(以毫秒为单位)运行,但10000(约20秒)的运行速度要慢得多
有没有更好/更快的方法?请记住,它需要在ECMAScript中
var maxNumber = 99;
var numToGenerate = 5;
var bigShuffle = shuffle(maxNumber);
var randomNumbers = bigShuffle.slice(0, numToGenerate);
alert(randomNumbers);
function shuffle(m)
{
var temp;
var rnd;
// create an empy array
var arr = new Array();
for(var i = 0 ; i < m; i++)
{
arr.push(i);
}
while (m)
{
rnd = Math.floor(Math.random() * m-=1);
// And swap it
temp = arr[m];
arr[m] = arr[rnd];
arr[rnd] = temp;
}
return arr;
}
var maxNumber=99;
numToGenerate变量=5;
var bigShuffle=shuffle(maxNumber);
var randomNumbers=bigShuffle.slice(0,numtGenerate);
警报(随机数字);
函数洗牌(m)
{
无功温度;
var-rnd;
//创建一个empy数组
var arr=新数组();
对于(变量i=0;i
这是否回答了您的问题?