是否有一些技巧可以让人们使用bc(或其他一些标准实用程序)返回任意数量数字的标准差?为了方便起见,假设数字以以下方式存储在Bash变量中:
myNumbers="0.556
1.456
45.111
7.812
5.001"
因此,我正在寻找的答案将采用以下形式:
standardDeviation="$(echo "${myNumbers}" | <insert magic here>)"
最佳答案
使用awk:
standardDeviation=$(
echo "$myNumbers" |
awk '{sum+=$1; sumsq+=$1*$1}END{print sqrt(sumsq/NR - (sum/NR)**2)}'
)
echo $standardDeviation
使用perl:
#!/usr/bin/env perl
use strict; use warnings;
use Math::NumberCruncher;
my @data = qw/
0.556
1.456
45.111
7.812
5.001
/;
print Math::NumberCruncher::StandardDeviation(\@data);
输出
16.7631