使用java近似计算π的值实践
  Y8XIq1u6ceQW 2023年11月19日 24 0

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

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

 

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

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月19日 0

暂无评论

推荐阅读
  YgmmQQ65rPv4   2023年11月19日   13   0   0 Java应用程序
  Y8XIq1u6ceQW   2023年11月19日   25   0   0 Java
  AeUHztwqqxTz   2023年11月02日   22   0   0 Javatomcatapache
  YgmmQQ65rPv4   2023年11月02日   38   0   0 赋值Java运算符
  qdH5JHSHCtBs   2023年11月02日   38   0   0 Javadns cache
Y8XIq1u6ceQW
最新推荐 更多