AS3.0で配列のシャッフルを行う関数。
/**
* 配列シャッフル
* @param target 対象となる配列
* @param cnt シャッフル回数 ※あまり少ないと効果がありません
*/
protected function _shuffleArr(target:Array, cnt:int):void
{
var len:int = target.length;
while (cnt)
{
target.push(target.splice(int(Math.random() * len), 1));
cnt--;
}
}
以下が使用例。
var arr:Array = [ "北海道", "青森", "岩手", "宮城", "秋田", "山形", "福島", "茨城", "栃木", "群馬", "埼玉", "千葉", "東京", "神奈川", "新潟", "富山", "石川", "福井", "山梨", "長野", "岐阜", "静岡", "愛知", "三重", "滋賀", "京都", "大阪", "兵庫", "奈良", "和歌山", "鳥取", "島根", "岡山", "広島", "山口", "徳島", "香川", "愛媛", "高知", "福岡", "佐賀", "長崎", "熊本", "大分", "宮崎", "鹿児島", "沖縄" ]; /* 100回シャッフル */ _shuffleArr(arr, 100);
厳密にはシャッフルではないような気もしますが、それなりの動きはします。
引数の「target:Array」を「target:*」とすると、いちおうvector配列でも使用できます。