Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
bash中的一致随机正十进制数_Bash_Shell_Random - Fatal编程技术网

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

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

我想使用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
#/bin/bash

对于((i=0;i
bash
实际上不做十进制数,只做整数,但可以通过生成整数并在开始处放置小数点来伪造小数

试试这个:

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
手册!