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());