Perl:计算值范围

时间:2016-06-18 06:44:24

标签: perl

我想对一系列值进行计数,即我有900个X值在1到75x10 ^ 6之间。我需要计算这些X在-1000000,1000001-2000000,2000001-3000000 ...... 750范围内的范围下降的次数,然后返回这些范围的计数。

我将X的值存储在一个数组中,所以我可以使用for循环和if..else来完成它,但是给出750 if-else' s是没有解决方案而且我不知道如何在哈希键中实现值范围。请帮忙

提前谢谢你:)

1 个答案:

答案 0 :(得分:2)

对于每个值,您可以减1,除以1000000,并切除任何小数。这使得范围的索引为0到749(含)之间的数字。

示例:

use strict;
use warnings;

my @values = (...);  # filled from somewhere

my @range_count;
for my $value (@values) {
    my $x = int(($value - 1) / 1e6);
    $range_count[$x]++;
}

现在$range_count[0]包含第一个范围内的值数,$range_count[1]第二个范围内的值数等。

但是,如果某个范围内没有值,则计数将为undef,而不是0.如果此差异很重要,请将@range_count定义为

my @range_count = (0) x 750;

代替。