May 2024
Intermediate to advanced
276 pages
3h 51m
Japanese
本章で例示するプログラムには共通テーマがある。自然言語のテキスト操作だ。単語や文章をランダムに生成する、限定的ながらもユーザと対話する、などのテキスト処理だ。大半のプログラムは説明を目的としているため、実用性は高くなく玩具程度かもしれないが、ドキュメント執筆支援プログラムとして実用されているものもある。
ランダムデータ生成プログラムには多様な用途がある。Awk では疑似乱数を 1 つ返す組み込み関数、rand が核となる。rand 関数は種 (seed、疑似乱数生成の初期値) から乱数を生成するため、異なる乱数シーケンスが欲しければ、srand(n) を一度コールし、rand を種 n で初期化する必要がある。srand の引数を省略するとディフォルトで現在時刻が用いられる。srand の戻り値は前回使用した種なので、これを用いれば乱数シーケンスを再現できる。
rand が返す戻り値は 0 以上 1 未満の浮動小数点数だが、欲しい乱数は 1 から n までの整数という場合が多い。rand の戻り値から整数乱数を算出するのは容易だ。
# randint - return random integer k, 1 <= k <= n function randint(n) { return int(n * rand()) + 1 }
上例の randint(n) は rand から得た浮動小数点数を 0 から n の範囲に収まるよう乗算する。小数点以下を切り捨て、0 から n-1 の範囲の整数とし、1 を加える。
例6-1 の randint ...
Read now
Unlock full access
(コメント訳)
randint – 整数乱数k、1 <= k <= n