6章テキスト処理

本章で例示するプログラムには共通テーマがある。自然言語のテキスト操作だ。単語や文章をランダムに生成する、限定的ながらもユーザと対話する、などのテキスト処理だ。大半のプログラムは説明を目的としているため、実用性は高くなく玩具程度かもしれないが、ドキュメント執筆支援プログラムとして実用されているものもある。

6.1ランダムなテキスト生成

ランダムデータ生成プログラムには多様な用途がある。Awk では疑似乱数を 1 つ返す組み込み関数、rand が核となる。rand 関数は種 (seed、疑似乱数生成の初期値) から乱数を生成するため、異なる乱数シーケンスが欲しければ、srand(n) を一度コールし、rand を種 n で初期化する必要がある。srand の引数を省略するとディフォルトで現在時刻が用いられる。srand の戻り値は前回使用した種なので、これを用いれば乱数シーケンスを再現できる。

ランダムな選択

rand が返す戻り値は 0 以上 1 未満の浮動小数点数だが、欲しい乱数は 1 から n までの整数という場合が多い。rand の戻り値から整数乱数を算出するのは容易だ。

例6-1 randint関数
# randint - return random integer k, 1 <= k <= n

function randint(n) {
    return int(n * rand()) + 1
}

(コメント訳)

randint – 整数乱数k、1 <= k <= n

上例の randint(n)rand から得た浮動小数点数を 0 から n の範囲に収まるよう乗算する。小数点以下を切り捨て、0 から n-1 の範囲の整数とし、1 を加える。

例6-1randint ...

Get プログラミング言語AWK 第2版 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.