LinuxBash编程:随机数生成、对浮点数进行四舍五入运算
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
LinuxBash编程:随机数⽣成、对浮点数进⾏四舍五⼊运算本⽂介绍使⽤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
--THE END--。