RANDOM(6)

名称
random - ファイルからのランダムな行選択、あるいは乱数

書式
random [-elrUuw] [-f filename] [denominator]

解説
random は 2 つの異なる動作モードがあります。 デフォルトは、標準入力の行を読み取り、 1 / denominator の確率でそれらを標準出力へ書き込むことです。 この動作モードでのデフォルトの denominator は 2 であり、各行が表示される確率は 50/50 です。

第 2 の動作モードは、 filename からファイルを読み取り、ファイルの中身をかき混ぜ、 これを標準出力へ送るというものです。 ファイル内容は、改行または isspace(3) で判定される空白文字をもとに、かき混ぜられます。 この動作モードでのデフォルトの denominator は 1 であり、各行は表示されますが random(3) 順となります。

オプションは以下の通りです。

-e  -e オプションが指定されていると、 random は何も読み書きせず、 0 から denominator - 1 までの整数からランダムに選んだ値を返り値として そのまま終了します。

-f filename
    -f オプションは、読み取る filename を指定するために使用されます。 filename が ‘-’ の場合、標準入力が使用されます。

-l  改行で入力をかき混ぜます (デフォルト)。

-r  -r オプションは、出力がバッファリングされないことを保証します。

-U  かき混ぜた出力を作成するときに、同じ行や語を再利用して良いことを random(6) に指示します。

-u  同じ行または語をファイルから選択しないよう random(6) に指示します (デフォルト)。 入力に同じトークンが複数個ある場合には一意性を保証しませんが、 同じトークンが複数回選択されることは妨げます。

-w  改行ではなく、 isspace(3) で区切られる語を、かき混ぜます。

関連項目
random(3), fortune(6)

バグ
トークン表示時にはインデックスを使用していません。 このため、大きなファイル (10MB+) では遅くなるでしょう。 性能の影響を受ける領域でこれを使用するのでしたらば、工夫したでしょう。 しかしながら、小さなファイルに対しては十分に高速で効率的です。

歴史
行や語をかき混ぜる機能は、2003 に Sean Chittenden <seanc@FreeBSD.org> が追加しました。