0
点赞
收藏
分享

微信扫一扫

使用java近似计算π的值实践

gy2006_sw 2023-11-05 阅读 29

使用蒙特卡罗方法近似计算π的值实践

      蒙特卡罗方法是一种计算方法。原理是通过大量随机样本,去了解一个系统,进而得到所想要计算的值。是一种基于随机抽样的数值计算方法。这个方法的基本思想是在一个正方形内随机放置若干个点,并且判断每个点是否在以正方形中心为圆心、以正方形边长为直径的圆内。随着放置点的数量的增加,落在圆内的点与总点数的比值将趋近于π/4,我们可以根据这个比例来近似计算π的值。

非常强大和灵活,又相当简单易懂,很容易实现。对于许多问题来说,它往往是最简单的计算方法,有时甚至是唯一可行的方法。这一条感觉在某些场景上确实如此。

这里我们来实践验证下:

java中Math.PI= 3.141592653589793

java测试代码

import java.util.Random;
public class TestPi {
    public static void main(String[] args) {
        System.out.println("" );
        System.out.println("π Math.PI=" + Math.PI);        
        long stime = System.currentTimeMillis();
        int count = 0;
       // int total=1000000;
        int total = Integer.MAX_VALUE;
        Random random = new Random();
        for (int i = 0; i < total; i++) {
            double x = random.nextDouble();
            double y = random.nextDouble();
            if (x*x+ y*y < 1) {
                count++;
            }
        }
        System.out.println("total = " + total);
        System.out.println("count = " + count);
        double pi = 4.0 * count / total;
        System.out.println("pi = " + pi);

        long etime = System.currentTimeMillis();
        System.out.printf("执行时长:%d 毫秒.", (etime - stime));
    }

}

当样本只有1000000时

取得值

3.142648

3.14156

3.1452

3.141768

 3.142772

3.140096

3.141228

3.14214

使用java近似计算π的值实践_java

当样本为Integer.MAX_VALUE=2147483647时,耗时一分多钟


取得值

3.141621214869256

3.141580238538599

3.141645552190787

3.1416235562142094

3.1415531370516647

3.141560710566845

3.1415556236829403

3.141595825153215

耗时

75924

74308

75997

75425

74782

73179

75318

84878

使用java近似计算π的值实践_java_02

 

样本太多挺耗时的,测试验证能得到一个近似的π值

举报

相关推荐

0 条评论