Bash で乱数を生成する
Bash では、整数または浮動小数点数を使用して乱数を生成できます。bash スクリプトを使用して、特定の範囲またはサイズ内で乱数を作成できます。この記事では、Bash で乱数を生成するためのさまざまな方法を示します。
$RANDOM
変数を使用して乱数を生成する
$RANDOM
変数を使用して、0
から 32767
までの乱数またはランダム値の範囲を生成できます。ただし、$RANDOM
値を特定の値で除算することにより、乱数の生成に使用される数値範囲を制限できます。
0 から 32767 までの乱数を生成するには、次のコマンドを使用します。
$ echo $RANDOM
出力:
28091
$RANDOM
変数を残りの値で割ることにより、特定の範囲から乱数を生成できます。$
記号が付いた二重の最初の括弧 (())
が含まれています。
1 から 100 までの乱数を生成するには、次のコマンドを使用します。
$ echo $(( $RANDOM % 100 + 1 ))
出力:
19
パーセント記号はモジュロ演算の数学演算を失敗させるため、100 という数値に達することはありません(除算後の余り)。ランダムジェネレーターが値 100 を返した場合、モジュロ演算は値 0 を提供します。
shuf
コマンドを使用して乱数を生成する
コマンド shuf
を使用して、シェルスクリプトで多数の数値を生成できます。
次のコマンドは、0〜100 の単一の整数を作成します。
$ shuf -i 0-100 -n1
出力:
76
上記のコマンドで、-i
は入力範囲を示し、-n
は人数を示します。キー-n
の後には任意の正の数が続き、乱数を生成するための数を示します。次のコマンドを実行して、0〜100 の 5つの乱数を出力します。
$ shuf -i 0-100 -n5
出力:
68
78
24
76
41
/dev/urandom
を使用して乱数を生成する
/dev/urandom
デバイスファイルを使用すると、$RANDOM
変数よりもはるかにランダムな疑似乱数を生成できます。ただし、これらの数値をスクリプトの変数に入れるには、例に示すように、od
によるフィルタリングなどの追加の作業が必要です。
od /dev/urandom -A n -t d -N 1
-t d
オプションは、符号付き 10 進数を出力形式として使用する必要があることを示し、-N 1
は、/dev/urandom
から 1 バイトを取得するようにプログラムに指示します。
出力:
124
awk
を使用して乱数を生成する
awk
の rand()
関数は、0 から 1 の範囲のランダムな浮動小数点数を返します。BEGIN
に続くコマンドは、次のステップの前に実行されます。
awk 'BEGIN{x=rand(); print x}'
出力:
0.444937