是否可以有一个变量从三个预先确定的数字中选择一个随机数?
样本:
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]
。