以下の内容はhttp://sonic64.com//2004-11-13.htmlより取得しました。


Landscape トップページ | < 前の日 2004-11-12 2004-11-13 次の日 2004-11-14 >

Landscape - エンジニアのメモ 2004-11-13

Perl で配列をシャッフル


* Perl で配列をシャッフル

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [Perl]

Perl で配列をシャッフルする方法。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〉Perlクックブック〈VOLUME1〉

トム クリスチャンセン / ネイザン トーキントン / Tom Christiansen / Nathan Torkington / Shibuya Perl Mongers / ドキュメントシステム
発売日: 2004/09


amazon で詳しく見る

Perlクックブック〈VOLUME2〉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