Java 计算函数的和

Java 计算函数的和,java,java-stream,Java,Java Stream,我有一个点的数组列表,比如 A[]={2,5,2,25,84} 我已经计算了A'as∑((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)² 要计算一个' 我们可以写作 Integer Asum = A .stream()

我有一个点的数组列表,比如 A[]={2,5,2,25,84} 我已经计算了A'as∑((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)²

要计算一个' 我们可以写作

Integer Asum = A
            .stream()
            .reduce((prev, next) -> prev + next)
            .get();
 A¯ = Asum/n
我们得到了所有元素的总和,然后我们就可以写了

Integer Asum = A
            .stream()
            .reduce((prev, next) -> prev + next)
            .get();
 A¯ = Asum/n

因此,如何为∑(Ai-A‘)²实现这一点,您要寻找的是利用
map
操作以及
求和
终端操作,例如在以下代码块中:

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

您正在寻找的是使用
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

@与上述示例A类似的死池将为(2+5+2+25+84)/5,结果为23.6。接下来的公式是(2-23.6)²+(5-23.6)²+(2-23.6)²+(25-23.6)²+(84-23.6)²你写了什么/试过什么?这是家庭作业吗?请参阅@ajaysingh welcome to stackoverflow,您能提供代码并告诉我们您在哪里需要帮助吗。目前,它太宽泛,很难弄清楚你想要什么need@ChristopherSchneider是的,但我可以用普通for循环解决它,但我在想如何优化它并使用流。第一部分我可以使用流,但第二部分我有点困惑,我应该使用多个流吗?这可能很简单,但是可以在一个流中完成吗?流不一定会“优化”任何东西。@Deadpool像上面的例子一样,a将是(2+5+2+25+84)/5,结果是23.6。接下来的公式是(2-23.6)²+(5-23.6)²+(2-23.6)²+(25-23.6)²+(84-23.6)²你写了什么/试过什么?这是家庭作业吗?请参阅@ajaysingh welcome to stackoverflow,您能提供代码并告诉我们您在哪里需要帮助吗。目前,它太宽泛,很难弄清楚你想要什么need@ChristopherSchneider是的,但我可以用普通for循环解决它,但我在想如何优化它并使用流。第一部分我可以使用流,但第二部分我感到困惑,我应该使用多个流吗?这可能很简单,但是可以在一个流中完成吗?流不一定会“优化”任何东西。