Bash: $RANDOM を使用して任意の浮動小数点数を生成する方法

Bash: $RANDOM を使用して任意の浮動小数点数を生成する方法

整数乱数ジェネレータ$RANDOMを使用して、特定の精度と特定の範囲の実際の乱数を生成できますか?たとえば、0と1の間の精度が4の間違いをどのように生成しますか?

0.1234
0.0309
0.9001
0.0000
1.0000

簡単な回避策:

printf "%d04.%d04\n" $RANDOM $RANDOM

ベストアンサー1

awk -v n=10 -v seed="$RANDOM" 'BEGIN { srand(seed); for (i=0; i<n; ++i) printf("%.4f\n", rand()) }'

nこれにより、[0,1)(例では10)の範囲の小数点以下4桁の乱数が出力されます。これは標準ではなく、最も一般的な実装として実装されているrand()in関数を使用して、範囲内の任意の値を返します。乱数ジェネレータはシェル変数によってシードされます。awkawkawk$RANDOM

awkプログラムにBEGINブロックのみがあり、他のコードブロックがない場合、標準awk入力ストリームから入力を読み取ろうとしません。

すべてのOpenBSDシステム(または同じシステム)でjot便利、元の4.2BSDにあります)以下は、指定された10個の乱数を生成します。

jot -p 4 -r 10 0 1

おすすめ記事