ハブ君の寝言

日記のような何か

Perlで乱数生成

重ならない乱数列を作るには…。
とてもめんどくさいですね。
もっと軽くできないのかしらん?

#!/usr/bin/perl
my $max = 2048; # 0 ~ 2047の乱数
my $ro = 200; # 生成する乱数の数
my @num; 
srand(12345); # seed
for(my $i = 0; $i<$ro;$i++){
 my $a = int(rand($max)); # 乱数を生成
 for(my $j = 0; $j < $i; $j++){
  $t = 1; # フラグたてる
  if($num[$j] eq $a){ # リストと比較
   $t = 0; # フラグ下ろす
   last; # ループを抜け出す
  }
 }
 if($t == 1){
  push(@num,$a); # リストに乱数を追加
  print"$a\n"; # 乱数を出力
 }
}