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
--THE END--


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM