如何生成随机个位数?
我利用seq -w 10
它给出了以下输出
01
02
03
04
05
06
07
08
09
10
进一步的逻辑如何实现,以便只从 0 到 10 中随机选择 1 位数字
答案1
shuf -i0-9 -n1
shuf
生成随机排列,-i
接受范围参数,因此我们提供范围0-9
,并且-n1
就像head
,仅打印随机数字的第一个。
或者您可以使用RANDOM
类似 Korn 的 shell 的内置 shell 变量(ksh、zsh、bash、yash;还有 busybox sh)。
echo "$((RANDOM % 10))"
而RANDOM
是 (来自man bash
)
0 到 32767 之间的随机整数
这意味着某些数字的可能性会稍微低一些(如果这很重要的话)。
对于数字来说0-7
,确实如此100 * 3277 / 32767 ≈ 10.00092 %
。
对于数字8
和9
,100 * 3276 / 32767 ≈ 9.99786 %
答案2
有 10 个“单位数字”—— 0 到 9。(十不是单位数字。)因此,如果您想使用纯 Bash 来完成此操作,而不使用外部命令,那么您可以执行以下操作:
echo $((RANDOM%10))
7
((RND=RANDOM%10))
echo $RND
4
答案3
POSIXly:
awk 'BEGIN{srand(); print int(rand()*10)}'
请注意,对于大多数awk
实现,如果在同一秒内调用两次,将产生相同的数字。
答案4
使用嘘命令它是 GNU 实用程序:
shuf -i 0-9 -n 1