bash中的统一随机正十进制数

时间:2017-09-09 09:06:19

标签: bash shell random

我想使用ping进行随机ICMP流量。我需要在我的代码中为时间参数创建一个0.5到1之间的随机十进制数。你能告诉我如何制作统一的随机十进制数吗?我的代码只能生成一个整数。感谢

#!/bin/bash

for ((i = 0; i <=100; i++))
do
#need to have random number between 0.5 to 1 for time
time=$(($RANDOM%5+1))
num=$(($RANDOM%5+1)) 

ping -c $num -i $time 10.0.0.2 

done

1 个答案:

答案 0 :(得分:1)

bash实际上不执行十进制数,只有整数,但你可以通过生成整数并在开头放一个小数点来伪小数。

试试这个:

echo "0.$(( ($RANDOM%500) + 500))"

关于它是统一的,您可以生成10,000个这样的样本:

for ((i=1;i<10000;i++)) ; do echo "0.$(( ($RANDOM%500) + 500))" ; done > data

然后使用 gnuplot 绘制频率分布,如下所示:

gnuplot --persist <<EOF

# Make some suitable labels.
set title "Number Distribution"
set xlabel "Value"
set ylabel "Count"

set style histogram clustered gap 1
set style fill solid border -1

binwidth=0.01
set boxwidth binwidth
bin(x,width)=width*floor(x/width) + binwidth/2.0

plot 'data' using (bin(\$1,binwidth)):(1.0) smooth freq with boxes
EOF

enter image description here