順序のランダム化

テキストファイルの行順をランダムにする

同等のawkプログラムへ

プログラム

プログラムは以下のようになります。 以下をタイプして、適当な名前でセーブしてください。ここでは rand.pl という名前でセーブしたことにして話を進めます。
while (<>) {
	s/[\r\n]//g;
	$data[$.] = $_;
}

srand();

for ( $i = 1; $i <= $.; $i++ ) {
	&shuffle( $i );
}

for ( $i = 1; $i <= $.; $i++ ) {
	printf( "%s\n", $data[$i] );
}

sub shuffle
{
	$num = int( rand( $. )) + 1;

	$tmp = $data[$_[0]];
	$data[$_[0]] = $data[$num];
	$data[$num] = $tmp;
}

exit;

入力データ

以下のように並び替えが済んでいるファイル num.txt があるとします。
1
2
3
4
:
99

実行結果

OSはWindowsを利用していると 仮定します。 DOS prompt 上で、
c:\perl> perl rand.pl num.txt
とタイプします。 順番がぐちゃぐちゃになった出力が得られると思います。
順番は実行毎に変化するため実例は載せません。実行してみてください。
メニューに戻る
Tkensaku

TKENSAKU top へ

Copyright © 2004 TKEN