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配列でも使用できます。