如何在bash中生成两个极限之间的随机数而不使用shuf或sort-R

如何在bash中生成两个极限之间的随机数而不使用shuf或sort-R,bash,random,Bash,Random,我需要在bash中生成一个1981年到2012年(含)之间的随机数。我无法访问shuf或sort-R,我已尝试: floor=1981 range=2012 while [ "$number" -le $floor ]; do number=$RANDOM; let "number %= range"; done 及 然而,这些总是返回到1992年: echo $number 1992 有人有其他建议吗。理想情况下,仅供参考,但可能不可能,我希望它在一个循环内返回1981年至2012

我需要在bash中生成一个1981年到2012年(含)之间的随机数。我无法访问shuf或sort-R,我已尝试:

floor=1981
range=2012
while [ "$number" -le $floor ]; 
do 
number=$RANDOM; 
let "number %= range"; 
done

然而,这些总是返回到1992年:

echo $number
1992
有人有其他建议吗。理想情况下,仅供参考,但可能不可能,我希望它在一个循环内返回1981年至2012年间的每个数字一次。目前,我只需要知道如何在bash中生成两个限制之间的随机数,而不使用shuf或sort-R

提前谢谢

$ echo $(( (RANDOM % 32) + 1981 ))
1991
$ echo $(( (RANDOM % 32) + 1981 ))
2000
$ echo $(( (RANDOM % 32) + 1981 ))
1998
要仅发射一次,需要阵列:

  declare -A emitted
  ${emitted[$number]:-false} || {
    emitted[$number]=true
    echo $number
  }
因此,如果第一个表达式不适用于您,那么您就有一个BASH问题。 一些细节留给读者作为练习

要仅发射一次,需要阵列:

  declare -A emitted
  ${emitted[$number]:-false} || {
    emitted[$number]=true
    echo $number
  }
因此,如果第一个表达式不适用于您,那么您就有一个BASH问题。 一些细节留给读者作为练习

要仅发射一次,需要阵列:

  declare -A emitted
  ${emitted[$number]:-false} || {
    emitted[$number]=true
    echo $number
  }
因此,如果第一个表达式不适用于您,那么您就有一个BASH问题。 一些细节留给读者作为练习

要仅发射一次,需要阵列:

  declare -A emitted
  ${emitted[$number]:-false} || {
    emitted[$number]=true
    echo $number
  }
因此,如果第一个表达式不适用于您,那么您就有一个BASH问题。
“一些”细节留给读者作为练习。

这是否回答了您的问题?这回答了你的问题吗?这回答了你的问题吗?这回答了你的问题吗?