每个矩阵数组的Perl.Average值

时间:2014-06-02 12:44:42

标签: arrays perl loops matrix

我创建了一个函数,它生成一个随机矩阵。

sub gen {
    my $x = int(rand($_[0]-1)+1);
    my $y = int(rand($_[1]-1)+1);
    my $matrix = [ map [ map int(rand($_[2]-1)+1), 1..$x ], 1..$y ];
    return $matrix;
}

my $array_ref = $gen(5,10,5);

我如何获得每个矩阵数组的平均值? 如果可能的话,没有正则表达式。

我还没有完全了解数组引用的开头,但这是我的尝试。我试图获取所有值并将其除以@_,得到数组中元素的标量数:

sub func{
    my $sum;
    my @avg;
    my $avg;
    foreach (@$array_ref) {
        $sum += $_;
        $avg = $sum/@_;
    }
    push (@avg, $avg);
}

1 个答案:

答案 0 :(得分:1)

如果平均而言,您希望总和除以元素数量,

use List::Util qw(sum);

for my $r (@$array_ref) {

  printf("%.2f\n",  sum(@$r)/@$r);
}

没有模块,

sub sum {
  my $n = 0;
  $n += $_ for @_;
  return $n;
}

for my $r (@$array_ref) {

  printf("%.2f\n",  sum(@$r)/@$r);
}