我正在尝试确定一些可以与 $RANDOM 一起使用以从特定范围生成随机数但无法找到的选项。有人可以帮我吗。echo $RANDOM 从 shell 生成数字,但它是随机的,并不特定于我的范围。我想在 1 到 100 的范围内生成随机数。
问问题
4684 次
5 回答
2
如果你有 GNU 排序:
rand=$( seq $start $end | sort -R | head -1)
调用外部工具,因此会比使用 $RANDOM 执行算术慢几毫秒。
于 2013-01-22T22:36:57.947 回答
1
使用bash的另一种解决方案:
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 回答