Monday, May 28, 2007
Perl 펄] 중앙값, 중간값, 메디안 구하기 함수; Median Function
숫자가 들어 있는 배열에서, 중앙값(Median)을 구하는 방법입니다. 아래의 getMedian 함수를 사용하면 됩니다.
중앙값을 구하기 전에, 반드시 배열의 숫자들을 크기 순으로 소트해야 합니다.
소스 파일명: example.pl
중앙값이란? : ▶▶ 매스매티카] 중앙값, 중간값, 메디안 구하기 함수; Mathematica Median
중앙값 계산기: ▶▶ 평균 계산기, 합계 구하기, 표준편차 계산기, 중앙값; Sum Average Stdev Median Calc
중앙값을 구하기 전에, 반드시 배열의 숫자들을 크기 순으로 소트해야 합니다.
배열의 중앙값 얻기 예제
소스 파일명: example.pl
#!/usr/bin/perl
use strict; use warnings;
my @a;
my @a_sorted;
@a = ( 1, 2, 3 );
@a_sorted = sortNumber(@a); # 배열 크기순으로 정렬
print getMedian(@a_sorted), "\n";
# 출력 결과: 2
@a = ( 1, 2, 3, 4 );
@a_sorted = sortNumber(@a);
print getMedian(@a_sorted), "\n";
# 출력 결과: 2.5
@a = ( 4, 3, 1, 2 );
@a_sorted = sortNumber(@a);
print getMedian(@a_sorted), "\n";
# 출력 결과: 2.5
@a = ( 1345, 1301, 1368, 1322, 1310, 1370, 1318, 1350, 1303, 1299 );
@a_sorted = sortNumber(@a);
print getMedian(@a_sorted), "\n";
# 출력 결과: 1320
@a = ( 1, 2 );
@a_sorted = sortNumber(@a);
print getMedian(@a_sorted), "\n";
# 출력 결과: 1.5
@a = ( 100 );
@a_sorted = sortNumber(@a);
print getMedian(@a_sorted), "\n";
# 출력 결과: 100
# 중앙값 구하기 함수
# 크기 순으로 이미 정렬된 배열을 입력해야 함
# 효율성을 위해 이 함수 자체에는 정렬 기능이 없음
sub getMedian {
my @array = @_; # 파라미터로 입력된 배열 받기
my $len = $#array + 1; # 배열 요소들의 전체 개수 구하기
return undef if ($len == 0); # 빈 배열은 에러 반환
my $center = $len / 2; # 요소 개수의 절반값 구하기
if ($len % 2 == 1) { # 요소 개수가 홀수면
return $array[$center]; # 홀수 개수인 배열에서는 중간 요소를 그대로 반환
} else {
return ($array[$center - 1] + $array[$center]) / 2; # 짝수 개 요소는, 중간 두 수의 평균 반환
}
}
sub sortNumber {
return sort {$a <=> $b} @_;
}
use strict; use warnings;
my @a;
my @a_sorted;
@a = ( 1, 2, 3 );
@a_sorted = sortNumber(@a); # 배열 크기순으로 정렬
print getMedian(@a_sorted), "\n";
# 출력 결과: 2
@a = ( 1, 2, 3, 4 );
@a_sorted = sortNumber(@a);
print getMedian(@a_sorted), "\n";
# 출력 결과: 2.5
@a = ( 4, 3, 1, 2 );
@a_sorted = sortNumber(@a);
print getMedian(@a_sorted), "\n";
# 출력 결과: 2.5
@a = ( 1345, 1301, 1368, 1322, 1310, 1370, 1318, 1350, 1303, 1299 );
@a_sorted = sortNumber(@a);
print getMedian(@a_sorted), "\n";
# 출력 결과: 1320
@a = ( 1, 2 );
@a_sorted = sortNumber(@a);
print getMedian(@a_sorted), "\n";
# 출력 결과: 1.5
@a = ( 100 );
@a_sorted = sortNumber(@a);
print getMedian(@a_sorted), "\n";
# 출력 결과: 100
# 중앙값 구하기 함수
# 크기 순으로 이미 정렬된 배열을 입력해야 함
# 효율성을 위해 이 함수 자체에는 정렬 기능이 없음
sub getMedian {
my @array = @_; # 파라미터로 입력된 배열 받기
my $len = $#array + 1; # 배열 요소들의 전체 개수 구하기
return undef if ($len == 0); # 빈 배열은 에러 반환
my $center = $len / 2; # 요소 개수의 절반값 구하기
if ($len % 2 == 1) { # 요소 개수가 홀수면
return $array[$center]; # 홀수 개수인 배열에서는 중간 요소를 그대로 반환
} else {
return ($array[$center - 1] + $array[$center]) / 2; # 짝수 개 요소는, 중간 두 수의 평균 반환
}
}
sub sortNumber {
return sort {$a <=> $b} @_;
}
중앙값이란? : ▶▶ 매스매티카] 중앙값, 중간값, 메디안 구하기 함수; Mathematica Median
중앙값 계산기: ▶▶ 평균 계산기, 합계 구하기, 표준편차 계산기, 중앙값; Sum Average Stdev Median Calc
tag: perl
Perl | 펄
<< Home