Javascript 大型阵列的慢速洗牌

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

我正在Photoshop脚本中实现Fisher-yates shuffle。我想从最多99999个元素中创建一个包含
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
这是否回答了您的问题?