我想对一系列值进行计数,即我有900个X值在1到75x10 ^ 6之间。我需要计算这些X在-1000000,1000001-2000000,2000001-3000000 ...... 750范围内的范围下降的次数,然后返回这些范围的计数。
我将X的值存储在一个数组中,所以我可以使用for循环和if..else来完成它,但是给出750 if-else' s是没有解决方案而且我不知道如何在哈希键中实现值范围。请帮忙
提前谢谢你:)
答案 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;
代替。