Linux Bash编程:随机数生成、对浮点数进行四舍五入运算
本文介绍使用shell实现随机数生成以及对浮点数进行四舍五入运算。
随机数生成
生成0-1之间的随机数
生成0-1的随机数:
#!/bin/bash
random_number=`echo "scale=4 ; ${RANDOM}/32767" | bc -l` # 生成0-1的随机数
# random_number=`bc -l <<< "scale=4 ; ${RANDOM}/32767"`
echo $random_number
exit 0
执行:
$ 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之间的随机数:
#!/bin/bash
size=10
max=$(( 32767 / size * size ))
while (( (rand=$RANDOM) >= max )); do :; done
rand=$(( rand % (size+1) ))
echo $rand
生成1-10之间的随机数:
#!/bin/bash
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" [精度] [浮点数]
命令对浮点数进行四舍五入运算。
$ printf "%.*f\n" 0 6.666
7
$ printf "%.*f\n" 1 6.666
6.7
$ printf "%.*f\n" 2 6.666
6.67
bash脚本示例:
#!/bin/bash
random_number=`echo "scale=4 ; ${RANDOM}/32767" | bc -l` # 生成0-1的随机数
number=`echo "$random_number*100" | bc`
echo $number
number_round1=`echo $number | xargs printf "%.*f\n" 0`
echo $number_round1
number_round2=`echo $number | xargs printf "%.*f\n" 1`
echo $number_round2
exit 0
执行结果如下:
97.8900
98
97.9
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 百万级群聊的设计实践
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期