本文介绍使用shell实现随机数生成以及对浮点数进行四舍五入运算
随机数生成
生成0-1之间的随机数
生成0-1的随机数:1
2
3
4
5
6
random_number=`echo "scale=4 ; ${RANDOM}/32767" | bc -l` # 生成0-1的随机数
# random_number=`bc -l <<< "scale=4 ; ${RANDOM}/32767"`
echo $random_number
exit 0
执行:1
2
3
4
5
6$ sh random.sh
.8696
$ sh random.sh
.4517
$ sh random.sh
.5126
${RANDOM}
函数产生0 - 32767之间的伪随机整数。其中32767(2^15 - 1)是有符号16位整数的上限。scale=4
:保留4位小数
生成0-n之间的随机数
生成0-10之间的随机数:1
2
3
4
5
6
size=10
max=$(( 32767 / size * size ))
while (( (rand=$RANDOM) >= max )); do :; done
rand=$(( rand % (size+1) ))
echo $rand
生成1-10之间的随机数:1
2
3
4
5
6
size=10
max=$(( 32767 / size * size ))
while (( (rand=$RANDOM) >= max )); do :; done
rand=$(( rand % (size) + 1 ))
echo $rand
max=$(( 32767 / size * size ))
语句比较关键,这么处理的原因是${RANDOM}产生的最大数是32767,如果生成1-10之间的随机数,需要去掉32761-32767之间的数,否则会导致出现9和10的概率和其它数不一样。
对浮点数进行四舍五入运算
可以使用 printf "%.*f\n" [精度] [浮点数]
命令对浮点数进行四舍五入运算。
1 | $ printf "%.*f\n" 0 6.666 |
bash脚本示例:
1 |
|
执行结果如下:
1 | 97.8900 |
参考:
本文标题:Linux Bash编程:随机数生成、对浮点数进行四舍五入运算
文章作者:hiyo
文章链接:https://hiyongz.github.io/posts/linux-shell-bash-generate-random-numbers/
许可协议:本博客文章除特别声明外,均采用CC BY-NC-ND 4.0 许可协议。转载请保留原文链接及作者。