如何使用shell生成随机个位数

如何使用shell生成随机个位数

如何生成随机个位数?

我利用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 %

对于数字89,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

相关内容