Comment detail

重複無し乱数 (Nested Flatten)

This comment is reply for 2460 にしお: 「perlのrand()は0~1の値を返...(重複無し乱数). Go to thread root.

マニュアル確認しました。
1未満ですね失礼しました。
しかも、rand()は引数に指定したN未満という形で返すらしいです。
結局、掛け算する必要性すらなくorz

さらに、別のページでは僕の書いたコードは悪い例として載っていました(笑

下のように書くと良いらしいです。
#コードはそのページからのコピペです。
#ページ内検索:How do I shuffle an array randomly?

perlならではの書き方でなるほど~という感じ
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
    # fisher_yates_shuffle( \@array ) : 
    # generate a random permutation of @array in place
    sub fisher_yates_shuffle {
        my $array = shift;
        my $i;
        for ($i = @$array; --$i; ) {
            my $j = int rand ($i+1);
            @$array[$i,$j] = @$array[$j,$i];
        }
    }
    fisher_yates_shuffle( \@array );    # @array そのものを入れ替える

Index

Feed

Other

Link

Pathtraq

loading...