感觉这个算法经常会用到,前段时间写过一次,现在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;
}