Java 蒙特卡洛算法求圆周率近似值实例详解

发布时间 - 2026-01-11 03:12:13    点击率:

起源

 [1946: John von Neumann, Stan Ulam, and Nick Metropolis, all at the Los Alamos Scientific Laboratory, cook up the Metropolis algorithm, also known as the Monte Carlo method.]1946年,美国拉斯阿莫斯国家实验室的三位科学家John von Neumann,Stan Ulam 和 Nick Metropolis共同发明,被称为蒙特卡洛方法。它的具体定义是:在广场上画一个边长一米的正方形,在正方形内部随意用粉笔画一个不规则的形状,现在要计算这个不规则图形的面积,怎么计算列?蒙特卡洛(Monte Carlo)方法告诉我们,均匀的向该正方形内撒N(N 是一个很大的自然数)个黄豆,随后数数有多少个黄豆在这个不规则几何形状内部,比如说有M个,那么,这个奇怪形状的面积便近似于M/N,N越大,算出来的值便越精确。在这里我们要假定豆子都在一个平面上,相互之间没有重叠。(撒黄豆只是一个比喻。)

特点

蒙特卡洛方法的伟大之处,在于对精确性问题无法解决的时候,利用“模拟”的思想来求解。 在各个领域得以应用。本质是模拟(simulation): 利用大量随机输入,产生各种输出;结果的概率分布就是真实分布的“近似”。所以,输入的分布是否随机(目前计算机所能做的就是伪随机,并不能产生真正的随机分布),这个过程我们成为Sampling Random Variables。

计算圆周率近似值代码:

package com.xu.main; 
import java.util.Scanner; 
public class P9_1 { 
 static double MontePI(int n) { 
  double PI; 
  double x, y; 
  int i, sum; 
  sum = 0; 
  for (i = 1; i < n; i++) { 
   x = Math.random(); 
   y = Math.random(); 
   if ((x * x + y * y) <= 1) { 
    sum++; 
   } 
  } 
  PI = 4.0 * sum / n; 
  return PI; 
 } 
 public static void main(String[] args) { 
  int n; 
  double PI; 
  System.out.println("蒙特卡洛概率算法计算圆周率:"); 
  Scanner input = new Scanner(System.in); 
  System.out.println("输入点的数量:"); 
  n = input.nextInt(); 
  PI = MontePI(n); 
  System.out.println("PI="+PI); 
 } 
} 

输出:

蒙特卡洛概率算法计算圆周率:
输入点的数量:
9999999
PI=3.1417975141797516

总结

以上就是本文关于蒙特卡洛算法起源及特点的简介,还有如何利用这种算法思路在Java编程中求圆周率的近似值实例,希望对大家有所帮助。喜欢的朋友请继续关注!


# java  # 蒙特卡洛算法求圆周率  # Java利用蒙特卡洛方法求解圆周率π值  # Java简单计算圆周率完整示例  # Java小程序计算圆周率代码  # java中怎样表示圆周率  # 蒙特  # 卡洛  # 是一个  # 在这里  # 在这个  # 都在  # 之处  # 相互之间  # 数数  # 告诉我们  # 被称为  # 美国  # 越大  # 只是一个  # 并不能  # 能做  # 一米  # 拉斯  # 性问题  # 画一 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel怎么创建自己的包(Package)_Laravel扩展包开发入门到发布  Laravel怎么实现验证码(Captcha)功能  标题:Vue + Vuex + JWT 身份认证的正确实践与常见误区解析  Laravel Pest测试框架怎么用_从PHPUnit转向Pest的Laravel测试教程  北京的网站制作公司有哪些,哪个视频网站最好?  高防服务器:AI智能防御DDoS攻击与数据安全保障  Laravel如何实现多级无限分类_Laravel递归模型关联与树状数据输出【方法】  ,怎么在广州志愿者网站注册?  Laravel Eloquent:优雅地将关联模型字段扁平化到主模型中  node.js报错:Cannot find module &#39;ejs&#39;的解决办法  大连网站制作公司哪家好一点,大连买房网站哪个好?  如何快速建站并高效导出源代码?  使用PHP下载CSS文件中的所有图片【几行代码即可实现】  如何快速上传建站程序避免常见错误?  详解Oracle修改字段类型方法总结  昵图网官网入口 昵图网素材平台官方入口  油猴 教程,油猴搜脚本为什么会网页无法显示?  怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?  如何选择可靠的免备案建站服务器?  如何快速生成可下载的建站源码工具?  大型企业网站制作流程,做网站需要注册公司吗?  Python自动化办公教程_ExcelWordPDF批量处理案例  Laravel如何获取当前登录用户信息_Laravel Auth门面使用与Session用户读取【技巧】  简历没回改:利用AI润色让你的文字更专业  javascript基于原型链的继承及call和apply函数用法分析  EditPlus 正则表达式 实战(3)  详解vue.js组件化开发实践  Win11任务栏卡死怎么办 Windows11任务栏无反应解决方法【教程】  高配服务器限时抢购:企业级配置与回收服务一站式优惠方案  Laravel广播系统如何实现实时通信_Laravel Reverb与WebSockets实战教程  EditPlus中的正则表达式实战(5)  网站制作软件免费下载安装,有哪些免费下载的软件网站?  如何在阿里云完成域名注册与建站?  微信小程序制作网站有哪些,微信小程序需要做网站吗?  如何在阿里云ECS服务器部署织梦CMS网站?  电商网站制作价格怎么算,网上拍卖流程以及规则?  教学论文网站制作软件有哪些,写论文用什么软件 ?  电视网站制作tvbox接口,云海电视怎样自定义添加电视源?  如何在IIS中配置站点IP、端口及主机头?  bootstrap日历插件datetimepicker使用方法  HTML 中动态设置元素 name 属性的正确语法详解  绝密ChatGPT指令:手把手教你生成HR无法拒绝的求职信  如何在IIS中新建站点并解决端口绑定冲突?  Python并发异常传播_错误处理解析【教程】  高性能网站服务器配置指南:安全稳定与高效建站核心方案  Laravel怎么配置.env环境变量_Laravel生产环境敏感数据保护与读取【方法】  Laravel如何使用Livewire构建动态组件?(入门代码)  Win11搜索栏无法输入_解决Win11开始菜单搜索没反应问题【技巧】  Laravel Fortify是什么,和Jetstream有什么关系  如何快速搭建高效香港服务器网站?