Perl で配列をシャッフルする方法。Perl クックブックに「配列のランダマイズ」として載ってたけどメモ。自分のライブラリにもあるけど、ブラウザからさくっとコピー & ペーストできと便利だしね。
mixi perlならではの便利な短いコードを書き留めたい
http://mixi.jp/view_bbs.pl?id=2041
Perlクックブック〈VOLUME1〉
トム クリスチャンセン / ネイザン トーキントン / Tom Christiansen / Nathan Torkington / Shibuya Perl Mongers / ドキュメントシステム
発売日: 2004/09
amazon で詳しく見る
Perlクックブック〈VOLUME2〉
トム クリスチャンセン / ネイザン トーキントン / Tom Christiansen / Nathan Torkington / Shibuya Perl Mongers / ドキュメントシステム
発売日: 2004/09
amazon で詳しく見る
Perl 5.8 から標準ライブラリになった List::Util を使う方法もある。2004-11-14 の「List::Util Perl 標準の配列操作ライブラリ」を参照。
mixi perlならではの便利な短いコードを書き留めたい
http://mixi.jp/view_bbs.pl?id=2041
2004年11月12日 15:03 32: あとむ
#=========================
# 配列を混ぜる
#=========================
# @list=shuffle (@list);
sub shuffle {
my @list =@_;
for my $i ( 0..$#list ) {
my $rand=int(rand(@list));
my $tmp=$list[$i];
$list[$i]=$list[$rand];
$list[$rand]=$tmp;
}
@list
}
2004年11月12日 17:28 33: jjx
>>あとむさん
標準モジュールにList::Utilというものがあってその中にshuffleはありますよ
其れはおいておいて自分なりにかいてみました
sub shuffle {
my @list;
push( @list, splice(@_, int(rand(@_))) ) while(@_);
return @list;
}
Perlクックブック〈VOLUME1〉トム クリスチャンセン / ネイザン トーキントン / Tom Christiansen / Nathan Torkington / Shibuya Perl Mongers / ドキュメントシステム
発売日: 2004/09
amazon で詳しく見る
Perlクックブック〈VOLUME2〉トム クリスチャンセン / ネイザン トーキントン / Tom Christiansen / Nathan Torkington / Shibuya Perl Mongers / ドキュメントシステム
発売日: 2004/09
amazon で詳しく見る
- List::Util を使った配列のシャッフル
2004-11-14 追記。Perl 5.8 から標準ライブラリになった List::Util を使う方法もある。2004-11-14 の「List::Util Perl 標準の配列操作ライブラリ」を参照。
$ perl -MList::Util -e 'print List::Util::shuffle(0..9);'
1697803452
以上の内容はhttp://sonic64.com//2004-11-13.htmlより取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます
モバイルやる夫Viewer Ver0.14