6月 24, 2009
重複しない乱数の生成
0〜100まで乱数5個が欲しい、5個の乱数は重複しない
ってやりたいので、ここを参考に3.0に書き換えた(関数拝謝)。
function generateRandomInt():Array {
//ここだけ変更すればよい
var maxN:Number = 100;//乱数の最大値
var Need:Number = 5;//必要な個数
var int_a = new Array();
var int_b = new Array();
//0〜maxNの数字を全部配列に入れる
for (var i:int=0; i<= maxN; i++) {
int_a[i] = i;
}
var j:Number = 0;
var a_length:Number = int_a.length;
//要は配列をシャッフルする
while (a_length) {
var int_r:Number = Math.floor(Math.random()*(maxN+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の頭から必要な分を取り出す
var int_c = new Array();
for (var k:int = 0; k < Need; k++) {
int_c[k] = int_b[k];
}
//配列を返す
return int_c;
}
trace(generateRandomInt());