ランダムに数字選択
Perl初心者です。
1~8のうちの数字のランダムな並び変えと、その中から以下の条件で数字を6つ選びたいのですが、方法が分からず、ご教示いただければ幸いです。
やりたいのは、
1)1~8から6つの数字を選びたい。
2)数字のうち、6,7,8は1つしか選ばれないようにして、かつ3番目か4番目に入るようにしたい
です。
たとえば、
2,3,6,1,4,5(6が選ばれて3番目に)
4,5,3,8,1,2(8が選ばれて4番目に)
1,3,7,2,5,4(7が選ばれて3番目に)
等の結果が得られることを期待しています。
ちなみに、単純に8つの数字のランダムを作るときは以下のように記述していました。
可能であれば、これにどう追記したら上記のことが実現できるかご教示いただけると嬉しいです。
どうぞ宜しくお願いいたします。
my @buf = ("","","","","","","","","");
my @buf2 = ("","","","","","","","","");
my $set_flag = 1;
my $idx = 0;
while(){
if ($set_flag > 8){
last;
}
$idx = int(rand(8)) + 1;
if ($buf[$idx] ne ""){
}else{
$buf[$idx] = $set_flag;
$buf2[$set_flag] = $idx;
$set_flag++;
}
}
my $q_list = "";
for(my $loop=1;$loop<=8;$loop++){
if ($q_list ne ""){
$q_list .= ",";
}
$q_list .= "" .$buf2[$loop];
}
お礼
回答ありがとうございます。 なるほど、面白いですね。Excelでこんなことができるとは。