Bash

Bash:如何使用 $RANDOM 生成隨機浮點數

  • January 14, 2021

是否可以使用整數隨機生成器 $RANDOM 生成具有特定精度和特定範圍的實隨機數?例如,我們如何生成 0 到 1 之間的 4 精度實數?

0.1234
0.0309
0.9001
0.0000
1.0000

一個簡單的解決方法:

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

這將n在 [0,1) 範圍內輸出四位小數的隨機數(範例中為 10)。它使用rand()in 函式awk(不是標準awk的,但由最常見的awk實現實現)返回該範圍內的隨機值。隨機數生成器由 shell 的$RANDOM變數播種。

當一個awk程序只有BEGIN塊(並且沒有其他程式碼塊)時,awk不會嘗試從其標準輸入流中讀取輸入。

在任何 OpenBSD 系統(或具有相同jot實用程序的系統,最初在 4.2BSD 中)上,以下將生成指定的 10 個隨機數:

jot -p 4 -r 10 0 1

引用自:https://unix.stackexchange.com/questions/424715