我们也许想在代码中使用随机化的数字序列,为了在不同的场合让代码表现的不一样。因为在AS3中我们没法用数组洗牌方法,所有只有自己写一些代码来实现这种效果了。
这里,我用AS3给出了实现随机数组的不同方法。最关键的一点是没有使用循环语句。
下面就是我列举出来的随机化数组的不同算法:
1.没有循环语句法:
var rawArr:Array = ["1","2","3","4","5"];
trace(randomizeArray(rawArr));
function randomizeArray(myArray:Array):Array
{
myArray.sort(function(){ return Math.random()-0.5; });
return myArray;
}
2.用for循环法:
var rawArr:Array = ["1","2","3","4","5"];
trace(randomizeArray(rawArr));
function randomizeArray(myArray:Array):Array
{
for (var i:uint = 0; i < myArray.length; i++)
{
var rand:uint = int(Math.random() * myArray.length);
myArray.push( myArray.splice( rand, 1 )[0] );
}
return myArray;
}
3.用while循环法:
var rawArr:Array = ["1","2","3","4","5"];
trace(randomizeArray(rawArr));
function randomizeArray(array:Array):Array
{
var newArray:Array = new Array();
while (array.length > 0)
{
newArray.push(array.splice(Math.floor(Math.random()*array.length), 1));
}
return newArray;
}
总结:randomizeArray方法使用了整个数组并随机了元素的位置。如果你有更好的方法,请在留言处和大家一起分享!