[Flash] 配列のシャッフル

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

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です