
是否可以有一個變數從三個預先決定的數字中選擇一個隨機數?
樣本:
var= 10 or 100 or 1000
答案1
使用數組來保存值並使用內建變數在其中進行選擇$RANDOM
。例如,
x[0]=10 # One decade
x[1]=100 # One century
x[2]=1000 # One millennium
for ((i=1; i < 20; ++i)); do echo -n " ${x[$RANDOM%3]}"; done; echo
1000 10 10 10 10 100 10 100 100 10 10 100 100 100 10 1000 1000 1000 10
隨機性的品質不會是最好的(從中讀取位元組/dev/urandom
),但對於腳本來說應該足夠好。
註1:正如人們在評論中觀察到的那樣,當然可以使用 array litteral: x=(10 100 1000)
,而不是單獨初始化數組元素。
筆記2:可以透過 提取隨機元素,而不是對數組中的元素數量進行硬編碼${x[$RANDOM%${#x[@]}]}
。
答案2
如果您正在使用巴什(或者桀騁或者克什93)你可以這樣做:
echo "$((10**($RANDOM%3+1)))"
或者
var=$((10**($RANDOM%3+1)))
將其分配給變數
答案3
答案4
這是一個有點神秘的方法:
printf -v var '1%0*d' $(( RANDOM % 3 + 1 )) 0
$var
這將根據需要分配隨機值。格式printf
字串是1%0Nd
- 這會導致0
列印時帶有N
前導零,其中N
將是間隔中的隨機整數[1,3]
。