栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

基于Java语言计算PI(π)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

基于Java语言计算PI(π)

基于Java语言计算PI(π) 关于作者
  • 作者介绍

 博客主页:作者主页

 简介:JAVA领域优质创作者磊、一名在校大三学生、在校期间参加各种省赛、国赛,斩获一系列荣誉。

 关注我:关注我学习资料、文档下载统统都有,每日定时更新文章,励志做一名JAVA资深程序猿‍。

蒙特卡罗法

蒙特卡罗法的基本思想是:为了求解问题,首先建立一个概率模型或随机过程,使它的参数或数字特征等于问题的解:然后通过对模型或过程的观察或抽样试验来计算这些参数或数字特征,最后给出所求解的近似值。解的精确度用估计值的标准误差来表示。蒙特卡罗法的主要理论基础是概率统计理论,主要手段是随机抽样、统计试验。用蒙特卡罗法求解实际问题的基本步骤为:

(1)根据实际问题的特点.构造简单而又便于实现的概率统计模型.使所求的解恰好是所求问题的概率分布或数学期望;

(2)给出模型中各种不同分布随机变量的抽样方法;

(3)统计处理模拟结果,给出问题解的统计估计值和精度估计值。


该方法的思想是利用计算机随机数的功能,通过计算落在单位圆内的点与落在正方形内的点的比值计算PI。

由于图形的对称性,所以这里我们只需要考虑该图形的四分之一部分。
假定一点能够均匀地扔到一个正方形中,计算落入其中的点个数。通过计数其中落入内切圆的点的个数;
如果一共投入N个点,其中有M个落入圆中,则只要点均匀,假定圆周的半径为R,则:

代码部分
package com.zmz.countPI;


public class RandomPI {
    public static double rand_pi(int n) {
        int numInCircle = 0;
        double x, y;
        double pi;
        for(int i=0;i < n; i++){
            x = Math.random();
            y = Math.random();
            if(x * x + y * y < 1)
                numInCircle++;
        }
        pi = (4.0 * numInCircle) / n;
        return pi;
    }

    public static void main(String[] args) {
        System.out.println(rand_pi(10));  //改变参数值
        System.out.println(rand_pi(100));  //改变参数值
        System.out.println(rand_pi(1000));  //改变参数值
        System.out.println(rand_pi(10000));  //改变参数值
        System.out.println(rand_pi(100000));  //改变参数值
        System.out.println(rand_pi(1000000));  //改变参数值
        System.out.println(rand_pi(10000000));  //改变参数值
        System.out.println(rand_pi(100000000));  //改变参数值
        System.out.println(rand_pi(1000000000));  //改变参数值
    }
}
测试结果:
次数10102103104105106107108109
估计值4.03.123.1883.15843.13463.1422043.14141083.141419523.141542752

可以看出来,该方法投入点的个数越大,越接近真实值。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/342893.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号