평균에 대한 질문입니다. 정보
평균에 대한 질문입니다.
본문
아래 표현처럼 6개의 여분필드에 수를 입력받아 평균과 표준편차를 구할려고 합니다.
그런데, 여분필드에 값이 들어가지 않는 경우도 있기 때문에
평균을 구할때 count부분의 수를 값이 없는 만큼 빼고 처리를 해야합니다.
그런데, 아래와 같이 write_update.skin.php에 넣고 하니
값을 입력하지 않은 여분필드에 자동으로 0이 입력되어서 0점으로 점수가 있는 것으로 나옵니다.
즉....
여분필드에 2개의 점수가 입력되지 않았을 경우는 2개는 빼고 4개의 점수만 가지고 평균을 구하고 싶습니다.
$array = array(wr_1,wr_2,wr_3,wr_4,wr_5,wr_6); // ① 값들
$sum = array_sum($array); // ② 합계
$cnt = count($array); // 배열 크기
$avg = sprintf('%0.4f',$sum/$cnt); // ③ 평균
for ($i=0,$s=0;$i<$cnt;$i++)
{
$s+= ($array[$i]-$avg)*($array[$i]-$avg);
}
$std = sprintf('%0.4f',sqrt($s/$cnt)); // ④ 표준편차
echo '값들 : '.implode(', ',$array).'<br />'."\n";
echo '합계 : '.$sum.'<br />'."\n";
echo '평균 : '.$avg.'<br />'."\n";
echo '표준편차 : '.$std.'<br />'."\n";
그런데, 여분필드에 값이 들어가지 않는 경우도 있기 때문에
평균을 구할때 count부분의 수를 값이 없는 만큼 빼고 처리를 해야합니다.
그런데, 아래와 같이 write_update.skin.php에 넣고 하니
값을 입력하지 않은 여분필드에 자동으로 0이 입력되어서 0점으로 점수가 있는 것으로 나옵니다.
즉....
여분필드에 2개의 점수가 입력되지 않았을 경우는 2개는 빼고 4개의 점수만 가지고 평균을 구하고 싶습니다.
$array = array(wr_1,wr_2,wr_3,wr_4,wr_5,wr_6); // ① 값들
$sum = array_sum($array); // ② 합계
$cnt = count($array); // 배열 크기
$avg = sprintf('%0.4f',$sum/$cnt); // ③ 평균
for ($i=0,$s=0;$i<$cnt;$i++)
{
$s+= ($array[$i]-$avg)*($array[$i]-$avg);
}
$std = sprintf('%0.4f',sqrt($s/$cnt)); // ④ 표준편차
echo '값들 : '.implode(', ',$array).'<br />'."\n";
echo '합계 : '.$sum.'<br />'."\n";
echo '평균 : '.$avg.'<br />'."\n";
echo '표준편차 : '.$std.'<br />'."\n";
댓글 전체

0점은 아예 없는 건가요? 그리고 여분필드에 0이 자동으로 입력되는게 확실한지요.
그렇다면
0인 경우 제외하면 되겠지요
$array = array(wr_1,wr_2,wr_3,wr_4,wr_5,wr_6); // ① 값들
foreach ($array as $value) {
if($value) $result[] = $value;
}
$array = $result;
그렇다면
0인 경우 제외하면 되겠지요
$array = array(wr_1,wr_2,wr_3,wr_4,wr_5,wr_6); // ① 값들
foreach ($array as $value) {
if($value) $result[] = $value;
}
$array = $result;