2010-03-08 8 views
0

나는 분명히 "간단한"문제가 있지만 어떤 이유로 솔루션 ...
내가 n 개의 서로 다른 크기의 수백만 파일을 찾을 수 없습니다 나는 평균을 찾으려면 파일 크기.
간단히하기 위해 16KB의 배수로 그룹화했습니다.
실제 평균 파일 크기

< 16킬로바이트 = 18689546 개 파일
< 32킬로바이트 = 1365713 개 파일
< 48킬로바이트 = 1168186 개 파일
... 물론

, 간단한 (파일의 TOTAL_SIZE/수)하지 않습니다 작업. 그것은 평균 291KB를 제공합니다 ...
실제 평균을 계산하는 알고리즘은 무엇입니까 ...?

들으, JD

+0

어떤 데이터 유형을 사용하고 있습니까? 오버플로 문제가있는 것 같습니다. –

답변

1

당신은 파일 크기를 합산 초과 문제로 실행 될 수있다 (전체 크기는 아마 32 비트 값에 적합하지 않음). 가장 쉬운 해결 방법은 합계를 보유하는 변수에 64 비트 int를 사용하는 것입니다.

+0

64 비트를 사용합니다. 문제는 (total_size/파일 수)가 작동하지 않는다는 것입니다. 예를 들어,이 수식을 사용하면 1KB의 파일 10 개와 1MB의 파일 1 개가 평균 94KB를 제공합니다 ... 물론 잘못된 것입니다. –

+1

아마 평균보다 다른 것을 찾고 있습니까? 94KB는 1.01MB 인 11 개의 파일 중 올바른 평균입니다. 이 파일들에 대해 몇 가지 숫자를 알고 싶습니까? –

+1

"물론 잘못된 것입니다."- 여러분이 찾고있는 평균을 조금 더 명확하게 지정해야 할 필요가 있습니다. 10KB 파일과 1MB 파일의 평균 크기 (평균은 '평균'이라고 함)는 94KB입니다. 따라서 평균을 찾고 있지 않다면 찾고있는 것이 무엇인지 분명히해야합니다. –