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


相关推荐: 移动端脚本框架Hammer.js  如何在IIS7中新建站点?详细步骤解析  如何基于PHP生成高效IDC网络公司建站源码?  Laravel怎么做缓存_Laravel Cache系统提升应用速度的策略与技巧  敲碗10年!Mac系列传将迎来「触控与联网」双革新  深圳网站制作平台,深圳市做网站好的公司有哪些?  如何实现建站之星域名转发设置?  浅谈Javascript中的Label语句  在centOS 7安装mysql 5.7的详细教程  bootstrap日历插件datetimepicker使用方法  动图在线制作网站有哪些,滑动动图图集怎么做?  Gemini怎么用新功能实时问答_Gemini实时问答使用【步骤】  LinuxShell函数封装方法_脚本复用设计思路【教程】  免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?  胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?  国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?  百度浏览器网页无法复制文字怎么办 百度浏览器复制修复  Laravel如何创建和注册中间件_Laravel中间件编写与应用流程  如何将凡科建站内容保存为本地文件?  Laravel怎么导出Excel文件_Laravel Excel插件使用教程  JavaScript如何实现音频处理_Web Audio API如何工作?  Laravel如何配置Horizon来管理队列?(安装和使用)  lovemo网页版地址 lovemo官网手机登录  极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?  湖南网站制作公司,湖南上善若水科技有限公司做什么的?  高防服务器:AI智能防御DDoS攻击与数据安全保障  如何选择可靠的免备案建站服务器?  PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)  微信推文制作网站有哪些,怎么做微信推文,急?  uc浏览器二维码扫描入口_uc浏览器扫码功能使用地址  Laravel如何创建自定义中间件?(Middleware代码示例)  购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?  如何快速打造个性化非模板自助建站?  怎么用AI帮你为初创公司进行市场定位分析?  Python图片处理进阶教程_Pillow滤镜与图像增强  英语简历制作免费网站推荐,如何将简历翻译成英文?  如何在云服务器上快速搭建个人网站?  bing浏览器学术搜索入口_bing学术文献检索地址  php打包exe后无法访问网络共享_共享权限设置方法【教程】  Laravel如何获取当前用户信息_Laravel Auth门面获取用户ID  C#如何调用原生C++ COM对象详解  Win11搜索不到蓝牙耳机怎么办 Win11蓝牙驱动更新修复【详解】  原生JS实现图片轮播切换效果  Laravel如何使用API Resources格式化JSON响应_Laravel数据资源封装与格式化输出  如何快速重置建站主机并恢复默认配置?  Gemini手机端怎么发图片_Gemini手机端发图方法【步骤】  个人摄影网站制作流程,摄影爱好者都去什么网站?  北京专业网站制作设计师招聘,北京白云观官方网站?  JavaScript模板引擎Template.js使用详解  如何用搬瓦工VPS快速搭建个人网站?