package {
public class RandomNonOverlapping {
//↓この配列に重複しないランダムの数字が入ります。
public var ary= new Array();
public var max:uint = new uint();
public var Need:uint = new uint();//必要な個数
public function RandomNonOverlapping(m,n) {
init(m,n);
}
public function init(m,n):Array {
var max:uint = m;
var Need:uint = n;
var int_a = new Array();
var int_b = new Array();
//0~maxの数字を全部配列に入れる
for (var i:int=0; i<= max; i++) {
int_a[i] = i;<br />
}
var j:Number = 0;
var a_length:Number = int_a.length;
//要は配列をシャッフルする
while (a_length) {
var int_r:Number = Math.floor(Math.random()*(max+1-j));
//乱発生した整数を配列int_bに順番に入れ、int_aから削除する
int_b[j] = int_a.splice(int_r, 1);
j++;
//配列int_a内の数字が一つずつ減っていく
a_length = int_a.length;
}
//ここで配列int_bがシャッフルされた
//int_bの頭から必要な分を取り出す
for (var k:int = 0; k <Need; k++) {
ary[k] = int_b[k];
}
//配列を返す
return ary;
}
}
}
このClassをnewしてaryにアクセスすると配列が格納されます。
ActionScript3
1 2
var randomAry = new RandomNonOverlapping(9,10).ary;
trace(randomAry);