感覺這個算法經常會用到,前段時間寫過一次,現在push出來。原理是有兩個數組,一個數組存放隨機數,然后從另一個數組提取相關的數,然后把另一個數組的大小-1,remove掉這個數,unity里也是這個原理,用的是鏈表list
需要改寫哈。
public getRandomArray(max:number,returnnum:number): Array<number> {
//egret.log(" --- max" + max);
//egret.log(" --- returnnum" + returnnum);
var des:Array<number> = [];
for(var i= 0;i < max;i++)
{
des.push(i);
}
var random;
var temp: Array<number> = [];
for(var j = 0;j < returnnum; j++)
{
random = Math.ceil(Math.random() * des.length) - 1; //向上取整
temp.push(des[random]);
//egret.log(" --- random" + random);
des.splice(random,1);
//for(var k = 0;k < des.length; k++)
//{
// egret.log(k + " --- des[k] " + des[k]);
//}
}
return temp;
}
//egret.log(" --- max" + max);
//egret.log(" --- returnnum" + returnnum);
var des:Array<number> = [];
for(var i= 0;i < max;i++)
{
des.push(i);
}
var random;
var temp: Array<number> = [];
for(var j = 0;j < returnnum; j++)
{
random = Math.ceil(Math.random() * des.length) - 1; //向上取整
temp.push(des[random]);
//egret.log(" --- random" + random);
des.splice(random,1);
//for(var k = 0;k < des.length; k++)
//{
// egret.log(k + " --- des[k] " + des[k]);
//}
}
return temp;
}