【メモ】重複しない乱数配列を作る

2008年5月19日
カテゴリー: ActionScript

for(i = 0 ; i < length ; i++){
  array[i] = Math.floor(Math.random()*30);
}
//length:配列の要素数

 これだけでは配列に重複した値が入ってしまう可能性があります。Actionscriptで書いてますが、C言語でもJAVAでもほぼ一緒です。
 重複しないようにするには…。

for(i = 0 ; i < length ; i++){    array[i] = Math.floor(Math.random()*30);
   for(j = 0;j < length; j++){       if(j != i){          if(array[i] == array[j]){             i--;          }       }    } }

 乱数を発生させた後、自分自身以外と比較して同じものがあれば i を1引いてもう一度乱数を発生という感じです。
 30を変えると乱数の範囲を変えられます。ただし、配列の要素数未満にすると無限ループになります。
 いろいろぐぐってたんですが、方法としてもっとややこしい仕組みになっていたりわかりにくかったので調べるのを諦めて自分で考えました。
 ただし、この方法は遅いです。

タグ:

このエントリーをはてなブックマークに追加  

コメントをどうぞ