かべぎわブログ

技術的なことについてかけたらいいな…

シェルスクリプト上で乱数を扱う方法まとめ3選

概要

シェルスクリプトを書いていて、乱数が使いたいなーと思ったときにつかえるコマンドをご紹介します。

${RANDOM}をつかう

bashのシェル変数である${RANDOM}を利用します。
この変数は参照されるたびに0~32767の値を返します。
手っ取り早いですが、あまり乱数の精度としては高くないという欠点があります。

$ echo ${RANDOM}
15332

/dev/randomまたは/dev/urandomをつかう

これらの疑似デバイスを利用することでより精度の高い乱数を生成することができます。
デバイスドライバや環境によるノイズを利用して真の乱数性を得ることができます(よくわかっていない)

実行する際は以下のようにodコマンドを利用し読み出す必要があります。

$ od -An -tu2 -N2 /dev/random
53488                                    
$ od -An -tu2 -N2 /dev/urandom
33190                             

(/dev/random/dev/urandomの違いについてはむずかしいので省略します 。)

jotコマンドをつかう

このコマンドはseqなどと同様に数列を生成するのに長けているコマンドですが、-rオプションをつけることで乱数を生成することができます。
また、乱数の範囲を設定することも可能です。

jot -r データ数 下限値 上限値で指定します。

$ jot -r 5 7 15
8
10
14
9
8

おわりに

ひさしぶりにまじめに書いた。

[改訂第3版]シェルスクリプト基本リファレンス ──#!/bin/shで、ここまでできる (WEB+DB PRESS plus)

[改訂第3版]シェルスクリプト基本リファレンス ──#!/bin/shで、ここまでできる (WEB+DB PRESS plus)