整数乱数ジェネレータ$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関数を使用して、範囲内の任意の値を返します。乱数ジェネレータはシェル変数によってシードされます。awk
awk
awk
$RANDOM
awk
プログラムにBEGIN
ブロックのみがあり、他のコードブロックがない場合、標準awk
入力ストリームから入力を読み取ろうとしません。
すべてのOpenBSDシステム(または同じシステム)でjot
便利、元の4.2BSDにあります)以下は、指定された10個の乱数を生成します。
jot -p 4 -r 10 0 1