gpt4 book ai didi

linux - Bash 生成正数和负数之间的随机数

转载 作者:太空宇宙 更新时间:2023-11-04 10:30:50 25 4
gpt4 key购买 nike

我必须编写一个程序,在随机旋转的图像上显示一些文字。我希望这些在例如 -30 和 30° 之间。但是我没有在 bash/UNIX 中找到任何可以生成介于正数和负数之间的随机数的命令。

感谢您的帮助。

最佳答案

@Barmar 在评论中已经提出了正确的方法(没有产生外部进程)。

如果 OP 需要解开它,这里是:

angle=$(($RANDOM%61-30))

但我想提出一个更糟糕的选择,正如有人所说“越差越好”

angle=$(seq -30 30 | shuf -n 1) 
  • seq放入 stdout一个整数序列,换行符分隔,
  • shuf随机洗牌它的输入,
    • -n 1选项意味着只输出第一行随机打乱

这样我们就可以生成一副牌,编号为-30+30 ,我们洗牌,我们只发第一张牌。

我在回答中喜欢的是解的范围表述得更清楚,至少从一个没有数学天赋的人的视角来看是这样。

相反,它比使用 $RANDOM

10:31 boffi@debian:~ $ time for i in {1..10000} ; do echo > /dev/null ; done

real 0m0.077s
user 0m0.036s
sys 0m0.040s
10:32 boffi@debian:~ $ time for i in {1..10000} ; do echo $(($RANDOM%61-30)) > /dev/null ; done

real 0m0.138s
user 0m0.116s
sys 0m0.020s
10:32 boffi@debian:~ $ time for i in {1..10000} ; do echo $(seq -30 30|shuf -n 1) > /dev/null ; done

real 0m33.328s
user 0m0.372s
sys 0m4.560s
10:33 boffi@debian:~ $

(另一方面,它只需要 3.3 毫秒,如果你在你的脚本中使用它一次......:-)

关于linux - Bash 生成正数和负数之间的随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40033918/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com