[英]Calculate summation of the function
我有一个点数组列表,例如 A[] = {2,5,2,25,84} 我将 A' 计算为 Σ((Ai) / n ),其中 n 是我必须计算 Σ( Ai-A¯)² 如何使用 java 流来做到这一点?
就像上面的例子 A¯ 将是 (2+5+2+25+84) / 5 ,结果是 23.6。 然后通过下一个公式,它将是 (2-23.6)²+(5-23.6)²+(2-23.6)²+(25-23.6)²+(84-23.6)²
喜欢计算 A¯ 我们可以写
Integer Asum = A
.stream()
.reduce((prev, next) -> prev + next)
.get();
我们得到了所有元素的总和,然后我们可以写
A¯ = Asum/n
那么如何为 Σ(Ai-A¯)² 做到这一点
您正在寻找的是利用map
操作以及sum
终端操作,例如在以下代码块中:
final int[] a = {2, 5, 2, 25, 84};
double averageOfA = (double) Arrays.stream(a).sum() / a.length; // A¯ in question
// System.out.println(averageOfA); // prints 23.6
double sumOfA = Arrays.stream(a)
.mapToDouble(num -> Math.pow(num - averageOfA, 2)) // mapping here
.sum(); // sum of all such values
// System.out.println(sumOfA); // prints 4929.2
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.