// Statistics.java	基本統計量の計算
//					2019.04.25
//					2017.06.09
//					2005.07.08
//					M.Yanaka
//	入力データの偏差値を求める

class Statistics {
  public static void main(String[] args) {
    int sum = 0;	// 合計
    int ss = 0;		// 自乗和
    double m;		// 平均
    double s;		// 標準偏差
    int[] x = {100,2,3,4,5,6,7,8,9,10};	// 入力データ
//  int[] x = new int[] {1,2,3,4,5,6,7,8,9,10};
    double[] y = new double[x.length];	// 偏差値

    for (int i = 0; i < x.length; i++) {	// x.length 配列xの長さ
      sum += x[i];			// 代入演算子
//    sum = sum + x[i];
      ss += x[i] * x[i];
    }
    m = (double) sum / x.length;	// キャスト演算子
    s = Math.sqrt((double) ss / x.length - m * m);
    for (int i = 0; i < x.length; i++) {
      y[i] = 50 + 10 * (x[i] - m) / s;
    }

    System.out.println("合計 = " + sum);
    System.out.println("平均 = " + m);
    System.out.println("標準偏差 = " + s);
    System.out.println("No.¥tデータ¥t偏差値");	// 出力並びをタブ(¥t)で区切る
    for (int i = 0; i < y.length; i++) {
      System.out.println((i+1) + "¥t" + x[i] + "¥t" + y[i]);
    }
  }
}

/********************

統計量とは、データの集まりに対して、その性質を表わす量。
	集まり全体の性質を表わす量と、
	個々のデータが集まりの中でどのような位置を占めるかを表わす量とがある。

基本統計量の例
	合計、平均、
	最大値、最小値、
	中央値、最頻値、
	標準偏差、

	偏差値


【発展】10個のデータの合計、自乗和、平均、標準偏差、最大値および最小値を求めよ。
    ただし、データは「配列の初期化」を用いて与えることとする。

【ヒント】配列中の要素の最大値(最小値)の求め方(アルゴリズム)

	仮の最大値(最小値)を定め、
	i番目の配列要素と仮の最大値(最小値)とを比較して、
	仮の最大値(最小値)のほうが小さ(多き)ければ、
	仮の最大値(最小値)を更新する。

	仮の最大値の初期設定の方法が2通りある。
	(1)予想されるどのデータより小さい値に設定する。
	(2)配列の最初の要素を仮の最大値とする。

********************/