bash中的一致随机正十进制数
我想使用ping进行随机ICMP通信。我需要为代码中的时间参数设置一个介于0.5到1之间的随机十进制数。你能告诉我如何制作统一的随机十进制数吗?我的代码只能生成一个整数。谢谢bash中的一致随机正十进制数,bash,shell,random,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
#!/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
#/bin/bash
对于((i=0;ibash
实际上不做十进制数,只做整数,但可以通过生成整数并在开始处放置小数点来伪造小数
试试这个:
echo "0.$(( ($RANDOM%500) + 500))"
就其均匀性而言,您可以生成10000个样本,如下所示:
for ((i=1;i<10000;i++)) ; do echo "0.$(( ($RANDOM%500) + 500))" ; done > data
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
((i=1;i)数据的
然后用gnuplot绘制频率分布,如下所示:
for ((i=1;i<10000;i++)) ; do echo "0.$(( ($RANDOM%500) + 500))" ; done > data
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
gnuplot——持久化您的命令行选项是混合的。-c
指定计数,而不是间隔,-i
就是这样做的。不管怎样,到目前为止您尝试了什么?为什么不简单地除以一个浮点数就可以了?echo“0.$($RANDOM%500)+500”)”
@MarcusMüller:对不起,这是个错误。我更正了。@MarkSetchell:这是一个统一的随机数吗?@Queen这不是bash脚本的问题。请阅读ping
手册!