如何在bash中生成两个极限之间的随机数而不使用shuf或sort-R
我需要在bash中生成一个1981年到2012年(含)之间的随机数。我无法访问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
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问题。
“一些”细节留给读者作为练习。这是否回答了您的问题?这回答了你的问题吗?这回答了你的问题吗?这回答了你的问题吗?