2008年07月23日

配列からランダムに任意の要素をピックアップするサブルーチン

 普段からPerlを使ってる人には「そんなん知ってるわJK」と突っ込みが入りそうですが、自らの防備録を兼ねて。

 ピックアップしたい数と配列を投げると、ランダムに指定数を選び取って配列で返してくれるサブルーチンです。

続きは「ソース読む」からどぞ


sub SelectArg{
#書式 SelectArg(選択数,選択元の配列);
use strict;
my($pick,@marg) = @_;
my @s_arg = ();

srand;
for(my $i=0;$i<$pick;$i++){
push(@s_arg,splice(@marg,int(rand(scalar @marg)),1));
}

return @s_arg;
}


使用例(ランダムに3つ選ぶ):

my @src = ('Konata','Kagami','Tsukasa','Miyuki','Miki','Inori','Matsuri');
my @result = SelectArg(3,@src);
print join(",",@result);

結果例→ Miyuki,Inori,Konata

選択元にハッシュのキーとか入れれば色々使い回せるかも。

追記:
 一部修正しました。
 旧: push(@s_arg,splice(@marg,int(rand($#marg)),1));
 正: push(@s_arg,splice(@marg,int(rand(scalar @marg)),1));
旧だと一番最後の値が選択肢に入っていきません。


タグ:Perl
posted by 鯖缶 at 16:18 | Comment(0) | TrackBack(0) | ただいま開発中 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバック
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。