順序のランダム化

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

同等のperlプログラムへ

プログラム

プログラムは以下のようになります。 以下をタイプして、適当な名前でセーブしてください。ここでは rand.awk という名前でセーブしたことにして話を進めます。
{
	DATA[NR] = $0;
}
END {
	srand();

	for ( i = 1; i <= NR; i++ ) {
		shuffle( i );
	}

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

function shuffle( src )
{
	num = int ( NR * rand() )+ 1;

	tmp = DATA[src];
	DATA[src] = DATA[num];
	DATA[num] = tmp;
}

入力データ

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

実行結果

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

TKENSAKU top へ

Copyright © 2004 TKEN