| // $Id: moments.java,v 1.1 2004-11-23 08:08:44 bfulgham Exp $ |
| // http://www.bagley.org/~doug/shootout/ |
| |
| import java.io.*; |
| import java.util.*; |
| import java.text.*; |
| import java.lang.Math; |
| |
| public class moments { |
| public static void main(String[] args) { |
| String line; |
| Vector nums = new Vector(); |
| double num, sum = 0.0; |
| double mean = 0.0; |
| double average_deviation = 0.0; |
| double standard_deviation = 0.0; |
| double variance = 0.0; |
| double skew = 0.0; |
| double kurtosis = 0.0; |
| double median = 0.0; |
| double deviation = 0.0; |
| int i, n, mid = 0; |
| |
| try { |
| BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); |
| while ((line = in.readLine()) != null) { |
| num = Double.parseDouble(line); |
| sum += num; |
| nums.add(new Double(num)); |
| } |
| } catch (IOException e) { |
| System.err.println(e); |
| return; |
| } |
| |
| n = nums.size(); |
| mean = sum/n; |
| for (i=0; i<n; i++) { |
| deviation = ((Double)nums.get(i)).doubleValue() - mean; |
| average_deviation += Math.abs(deviation); |
| variance += Math.pow(deviation,2); |
| skew += Math.pow(deviation,3); |
| kurtosis += Math.pow(deviation,4); |
| } |
| average_deviation /= n; |
| variance /= (n - 1); |
| standard_deviation = Math.sqrt(variance); |
| if (variance != 0.0) { |
| skew /= (n * variance * standard_deviation); |
| kurtosis = kurtosis/(n * variance * variance) - 3.0; |
| } |
| |
| Collections.sort(nums); |
| |
| mid = (n/2); |
| median = (n % 2 != 0) ? |
| ((Double)nums.get(mid)).doubleValue() : |
| (((Double)nums.get(mid)).doubleValue() + |
| ((Double)nums.get(mid-1)).doubleValue())/2; |
| |
| NumberFormat nf = NumberFormat.getInstance(); |
| nf.setMaximumFractionDigits(13); |
| nf.setGroupingUsed(false); |
| nf.setMaximumFractionDigits(6); |
| nf.setMinimumFractionDigits(6); |
| |
| System.out.println("n: " + n); |
| System.out.println("median: " + nf.format(median)); |
| System.out.println("mean: " + nf.format(mean)); |
| System.out.println("average_deviation: " + nf.format(average_deviation)); |
| System.out.println("standard_deviation: " + nf.format(standard_deviation)); |
| System.out.println("variance: " + nf.format(variance)); |
| System.out.println("skew: " + nf.format(skew)); |
| System.out.println("kurtosis: " + nf.format(kurtosis)); |
| } |
| } |
| |