意識してなかったけどActionScript関連のネタってエントリしたことなかったんだな...。いつも時間のない中、力業ですり抜けてきたんで公開できるようなコードとかモノも特に無いので当たり前か。
と言いつつオモムロ且つトウトツにエントリ。自分用なんですが。
任意の値を重複なくシャッフルして配列にして返す、ってクラス。
OperateArray.as ※AS2。
* * * * * * * * * *
class OperateArray{
private static var _max:Number;
private static var a:Array = new Array();
static function shuffle(n:Number){
_max = n;
a = makeArray();
return xShuffleArray(a);
}
private static function makeArray(){
for(var i:Number = 0; i < _max; i++){
a.push(i+1);//+1しなければ0から
}
return a;
}
private static function xShuffleArray(l_array){
var n = l_array.length;
var i = n;
while(i--){
var j:Number = Math.floor(Math.random()*n);
var t = l_array[i];
l_array[i] = l_array[j];
l_array[j] = t;
}
return a;
}
}
USAGE
* * * * * * * * * *
//1から20をシャッフル
var a:Array = OperateArray.shuffle(20);
trace(a);
//出力
16,9,12,10,4,13,19,11,1,15,3,17,8,2,14,5,20,6,7,18
要となるシャッフルの部分"xShuffleArray()"は野中さんのFN0212003を拝借させていただきました。

コメントする