题目背景

在机器学习中,对数据进行归一化处理是一种常用的技术。
将数据从各种各样分布调整为平均值为CCF 归一化处理 - 图1、方差为CCF 归一化处理 - 图2的标准分布,在很多情况下都可以有效的加速模型的训练。

问题描述

这里假定需要处理的数据为CCF 归一化处理 - 图3个整数CCF 归一化处理 - 图4
这组数据的平均值:
CCF 归一化处理 - 图5
方差:
CCF 归一化处理 - 图6
使用如下函数处理所有数据,得到的CCF 归一化处理 - 图7个浮点数CCF 归一化处理 - 图8即满足平均值为CCF 归一化处理 - 图9且方差为CCF 归一化处理 - 图10
CCF 归一化处理 - 图11

输入格式

从标准输入读入数据
第一行包含一个整数CCF 归一化处理 - 图12,表示待处理的整数个数
第二行包含空格分隔的CCF 归一化处理 - 图13个整数,依次表示CCF 归一化处理 - 图14

输出格式

输出到标准输出
输出共CCF 归一化处理 - 图15行,每行一个浮点数,依次表示按上述方法归一化处理后的数据CCF 归一化处理 - 图16

样例输入

  1. 7
  2. -4 293 0 -22 12 654 1000

样例输出

  1. -0.7485510379073613
  2. 0.04504284674812264
  3. -0.7378629047806881
  4. -0.7966476369773906
  5. -0.7057985054006686
  6. 1.0096468614303775
  7. 1.9341703768876082

样例解释

平均值:CCF 归一化处理 - 图17
方差:CCF 归一化处理 - 图18
标准差:CCF 归一化处理 - 图19

子任务

全部的测试数据保证CCF 归一化处理 - 图20,其中 CCF 归一化处理 - 图21 表示CCF 归一化处理 - 图22的绝对值
且输入的CCF 归一化处理 - 图23个整数CCF 归一化处理 - 图24 满足:方差 CCF 归一化处理 - 图25

求解

  1. #include <stdio.h>
  2. #include <math.h>
  3. int main() {
  4. int n;
  5. scanf("%d\n", &n);
  6. double value[n];
  7. double average = 0;
  8. int i;
  9. for (i = 0; i < n; i++) {
  10. scanf("%lf", &value[i]);
  11. average += value[i];
  12. }
  13. average /= n;
  14. double variance = 0;
  15. for (i = 0; i < n; i++) {
  16. variance += pow(value[i] - average, 2);
  17. }
  18. variance /= (double)n;
  19. double standard_deviation = sqrt(variance);
  20. for (i = 0; i < n; i++) {
  21. double result;
  22. result = (value[i] - average) / standard_deviation;
  23. printf("%lf\n", result);
  24. }
  25. return 0;
  26. }