スポンサーリンク

awkのrand()で乱数を発生させる

※awkの使い方をまとめて一覧にしました。
参考:awk入門-使い方まとめ一覧-

awkのrand()で乱数を発生させることができます。
※MACターミナル(BSD系)での動作確認です。

例えば、下記のin.txtがあったとします。

 $ cat in.txt 
str11 str12 str13
str21 str22 str23
str31 str32 str33

下記は、1列目と乱数をprint出力しています。
参考:awkのprint出力をタブ区切りにする←デフォルトはスペース区切りになっていることに注意
 $ cat in.txt | awk '{print $1, rand()}'
str11 0.840188
str21 0.394383
str31 0.783099

スポンサーリンク

srand()でseedを設定する

srand()でseedを設定できます。
BEGINブロックで設定すると良いかと思います。
下記は、srand()でseedを3に設定しています。

 $ cat in.txt | awk 'BEGIN{srand(3)}{print $1, rand()}'
str11 0.56138
str21 0.224983
str31 0.393092

整数の乱数を発生させる

整数の乱数を発生させる場合は、例えば下記のようにするとできます。

 $ cat in.txt | awk '{print int(rand() * 10)}'
8
3
7

3桁の整数の乱数です。
 $ cat in.txt | awk '{print int(rand() * 1000)}'
840
394
783

スポンサーリンク