Bash
Bash:如何使用 $RANDOM 生成隨機浮點數
是否可以使用整數隨機生成器 $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