温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

在Java中怎么利用蒙特卡洛算法求圆周率

发布时间:2020-12-04 16:56:10 来源:亿速云 阅读:318 作者:Leah 栏目:编程语言

在Java中怎么利用蒙特卡洛算法求圆周率?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

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

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI