1

我正在尝试确定一些可以与 $RANDOM 一起使用以从特定范围生成随机数但无法找到的选项。有人可以帮我吗。echo $RANDOM 从 shell 生成数字,但它是随机的,并不特定于我的范围。我想在 1 到 100 的范围内生成随机数。

4

5 回答 5

2

如果你有 GNU 排序:

rand=$( seq $start $end | sort -R | head -1)

调用外部工具,因此会比使用 $RANDOM 执行算术慢几毫秒。

于 2013-01-22T22:36:57.947 回答
1

的另一种解决方案:

 printf '%s\n' {1..100} | shuf | head -1
于 2013-08-08T18:08:31.617 回答
1

尝试使用shell函数执行此操作:

intrandfromrange() { echo $(( ( RANDOM % ($2 - $1 +1 ) ) + $1 )); }
intrandfromrange 1 100

解释

  • foo() { }是外壳函数的骨架。
  • $((...))给出封闭算术表达式的结果.
  • %代表模,除法运算的余数。
  • $1&$2是函数的第一个和第二个参数。
  • 剩下的只是简单的算术。
于 2013-01-22T18:01:42.503 回答
0

您不需要“shuf | head -1”。“ shuf -n 1

还:

序列 1 100 | shuf -n 1

类似的功能可能是:

rnd () {
seq $1 $2 | shuf -n ${3:-1}
}

因此 rnd 1200 5000 5 将输出 5 个介于 1200 和 5000 之间的随机数。每当需要时。如果您只需要一个并且您很赶时间,则无需指定 1。

于 2014-05-04T01:56:36.797 回答
0

如果您对第三代语言持开放态度:

python -c 'import random; print(random.randint(1, 100))'
于 2013-01-22T18:56:02.720 回答