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