2013-08-12 5 views
1

은 내가 유닉스 타임 스탬프의 집합을 가지고, 조금 바보가 된 기분 만의 상상하자 타임 스탬프 나는 단지 이 10 개의 타임 스탬프 간의 평균 시간 차이를 계산하려고합니다. 계산 방법을 찾지 못했습니다. 난 그냥 시도 무엇계산 평균 시간 차이는

1375110404 - 1374660925 = 449479 
1374482694 - 1374242337 = 240357 
1373793867 - 1373632889 = 160978 
1373187141 - 1373021668 = 165473 
1372754021 - 1372599890 = 154131 

449479 + 240357 + 160978 + 165473 + 154131 = 1170418 

1170418/5 = 234083,6 

했다 그러나 그것은 나에게 비논리적 보인다. 어떤 조언을 크게 주시면 감사하겠습니다.

편집 :

이러한 모든 스탬프는 PHP 배열에서 제공됩니다.

편집 :

올바른 방향으로 안내해 주신 Orangepill에게 감사드립니다. 여기에 최종 솔루션입니다 :

for($cnt = count($array), $res = 0, $i = 1; $i < $cnt; $i++) { 
    $res += $array[$i-1] - $array[$i]; 
} 

echo $res/$cnt; 

이 나에게 올바른 보이는

1375110404 - 1374660925 = 449479 
1374660925 - 1374482694 = 178231 
1374482694 - 1374242337 = 240357 
1374242337 - 1373793867 = 448470 
1373793867 - 1373632889 = 160978 
1373632889 - 1373187141 = 445748 
1373187141 - 1373021668 = 165473 
1373021668 - 1372754021 = 267647 
1372754021 - 1372599890 = 154131 

449479 + 178231 + 240357 + 448470 + 160978 + 445748 + 165473 + 267647 + 154131 = 2510514 

2510514/10 = 251051.4 

을 계산합니다.

+0

예상 무엇입니까 -이 :

나는 항상 관계없이 전달 된 배열의 배 정도의 양의 시간 차이에 따라 평균을 줄 것이다 대안으로이 답변을 제공 산출? –

+0

모든 시간 소인 간의 평균 시간 (초). 결과에 대한 기대와 함께, 나는 해결책을 요구하지 않을 것이다;) – user2557188

+0

* 그러나 그것은 나에게 비논리적이다. * - 위의 논리를 PHP 코드로 변환하려고하고 있는가, 아니면 결과가 다르다고 말하는가? 네가 생각했던대로? –

답변

1

당신이 묘사 한 것처럼 가장 직접적인 방법. 하여 타임 스탬프 엄격한 시간 순서에없는 경우

$res =0; 
for($x = 1, $num = count($array); $x < $num; $x++){ 
    $res =+ $array[$x] - $array[$x-1]; 
} 
echo $res/($num-1); 
+0

이것은 내게 맞는 것처럼 보이지만, 내가 정확히 무엇을 찾고 있는지 확인해야 할 것이다. 그렇다면 제 이론이 옳았습니다. 타이. – user2557188

+0

$ res + = $ array [$ x] - $ array [$ x-1]; – sugunan

1

current accepted answer 잘못된 결과를 줄 것이다. 즉, 음수 값은 평균을 왜곡합니다. 나는 틀릴 수도 있지만, 네가 시간 차이를 음수 값으로 계산하기를 원하지 않는다고 생각한다. 결국, -12 초 만에 100m를 돌릴 수 없다.

function array_average_diff(array $array) 
{ 
    $diff = 0; 
    for($i = 1; $i < count($array); $i++){ 
     $diff += abs($array[$i] - $array[$i - 1]); 
    } 
    return $diff/count($array); 
} 

See it working