gpt4 book ai didi

java - 使用Java多线程计算常数e

转载 作者:行者123 更新时间:2023-11-30 08:10:34 25 4
gpt4 key购买 nike

考虑到用户将传递带有线程数量的变量,我正在尝试使用线程在尽可能短的时间内计算分配的 e它将用于计算,但我无法让我的多线程正常工作以实现某种结果。有人告诉我,一个好的计算方法是使用以下数学表达式:e = sum( (3-4k^2)/((2k+1)!) ) ,其中 k = (0;无穷大)。但到目前为止我只得到了这个基本方法:

public class MainClass {
public static long fact(int x) {
long p = 1;
for (int i = 1; i <= x; i++)
p = p * i;
return p;
}

public static void main(String[] args) {
double e = 1;
for (int i = 1; i < 50; i++)
e = e + 1 / (double) (fact(i));
System.out.print("e = " + e);
}
}

最佳答案

您可以使用Java 8 parrallel Streams与显式创建线程相比,它更容易且不易出错。

import org.apache.commons.math.util.MathUtils;

...

public static double computeE(){
return IntStream.iterate(0,k->k+1)
.limit(100000)
.mapToDouble(k->(3-4*k*k)/MathUtils.factorialDouble(2*k+1))
.parallel()
.sum();
}

在我的机器上,它使用两个核心,并在 10000 次迭代中找到 e=2.718281828459045,这是一个每个数字都正确的值。

关于java - 使用Java多线程计算常数e,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30440356/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com