Shell脚本使用echo $ RANDOM生成两个数字或范围之间的随机数

时间:2013-01-22 18:00:04

标签: linux shell

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

5 个答案:

答案 0 :(得分:2)

如果你有GNU排序:

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

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

答案 1 :(得分:1)

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

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

说明

  • foo() { }是shell函数的框架。
  • $((...))给出随附的arithmetic expression
  • 的结果
  • %代表模数,是除法运算的剩余部分。
  • $1& $2是函数的第一个和第二个参数。
  • 其余的只是简单的算术。

答案 2 :(得分:1)

使用的另一种解决方案:

 printf '%s\n' {1..100} | shuf | head -1

答案 3 :(得分:0)

如果你对第三代语言开放:

python -c 'import random; print(random.randint(1, 100))'

答案 4 :(得分:0)

你不需要" shuf |头-1"。 " shuf -n 1 "

另外:

seq 1 100 | shuf -n 1

类似的功能可能是:

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

因此rnd 1200 5000 5将在1200和5000之间输出5个随机数。无论何时需要一些。如果您只需要一个并且匆忙,则无需指定1.