perlで配列のシャッフルする方法

配列のシャッフル。shuffleとshuffle2と2例。

2の方が、10倍処理が早いけど、ランダムさがあやしい。shuffleの方は、同様に確からしい結果になります。

sub shuffle{
my @new = ();
foreach (0..$#topics) {
my $rand = int(rand(@new + 1));
push(@new, $new[$rand]);
$new[$rand] = $topics[$_];

}
return @new;
}

 

 

sub shuffle2 {
my @list =@_;

for my $i ( 0..$#list ) {
my $rand=int(rand(@list));
my $tmp=$list[$i];
$list[$i]=$list[$rand];
$list[$rand]=$tmp;
}
@list
}

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。