我想使用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
答案 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