我创建了一个函数,它生成一个随机矩阵。
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);
}
答案 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);
}