当前位置: 首页 > 编程笔记 >

Java使用Math.random()结合蒙特卡洛方法计算pi值示例

都乐逸
2023-03-14
本文向大家介绍Java使用Math.random()结合蒙特卡洛方法计算pi值示例,包括了Java使用Math.random()结合蒙特卡洛方法计算pi值示例的使用技巧和注意事项,需要的朋友参考一下

本文实例讲述了Java使用Math.random()结合蒙特卡洛方法计算pi值。分享给大家供大家参考,具体如下:

一、概述

蒙特·卡罗方法(Monte Carlo method),也称统计模拟方法,是二十世纪四十年代中期由于科学技术的发展和电子计算机的发明,而被提出的一种以概率统计理论为指导的一类非常重要的数值计算方法。是指使用随机数(或更常见的伪随机数)来解决很多计算问题的方法。与它对应的是确定性算法。

详细可参考百度百科:https://baike.baidu.com/item/%E8%92%99%E7%89%B9%C2%B7%E5%8D%A1%E7%BD%97%E6%96%B9%E6%B3%95

二、实现代码

/**
 * Monte Carlo algorithm
 */
import java.math.*;
public class PI {
  /**
   * @param args
   */
  public static void main(String[] args) {
    // TODO Auto-generated method stub
    double xf = 0.0d;
    double yf = 0.0d;
    int total = 0;
    for(int i = 0;i<1000000;i++){
      xf = Math.random();
      yf = Math.random();
      if(Math.sqrt(xf*xf+yf*yf) < 1)
        total++;
    }
    System.out.println("小牛知识库测试结果:");
    System.out.println(4*(total/1000000.0));
  }
}

运行结果:

更多关于java算法相关内容感兴趣的读者可查看本站专题:《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》

希望本文所述对大家java程序设计有所帮助。

 类似资料:
  • 1 前言 在上一篇文章中,我们介绍了基于Bellman方程而得到的Policy Iteration和Value Iteration两种基本的算法,但是这两种算法实际上很难直接应用,原因在于依然是偏于理想化的两个算法,需要知道状态转移概率,也需要遍历所有的状态。对于遍历状态这个事,我们当然可以不用做到完全遍历,而只需要尽可能的通过探索来遍及各种状态即可。而对于状态转移概率,也就是依赖于模型Model

  • 本文向大家介绍Java 蒙特卡洛算法求圆周率近似值实例详解,包括了Java 蒙特卡洛算法求圆周率近似值实例详解的使用技巧和注意事项,需要的朋友参考一下 起源  [1946: John von Neumann, Stan Ulam, and Nick Metropolis, all at the Los Alamos Scientific Laboratory, cook up the Metrop

  • 个人觉得,整个 AplphaGo 对于机器学习来说,最核心的算法就是深度学习(Deep Learning)和增强学习(Reinforcement Learning)。蒙特卡洛树搜索 MCTS 是一个搜索框架,将这些机器学习的技术融合在了一起。今天这篇文章的重点在深度学习,增强学习以后再说。 蒙特卡洛树搜索 每个博弈类的人工智能算法的基础都是一个搜索算法。比如我们上学时学习的 A-star 算法,a

  • 从名字我们可以看出,MCMC由两个MC组成,即蒙特卡罗方法(Monte Carlo Simulation,简称MC)和马尔科夫链(Markov Chain ,也简称MC)。要弄懂MCMC的原理我们首先得搞清楚蒙特卡罗方法和马尔科夫链的原理。我们将用三篇来完整学习MCMC。在本篇,我们关注于蒙特卡罗方法。 2. 蒙特卡罗方法引入 蒙特卡罗原来是一个赌场的名称,用它作为名字大概是因为蒙特卡罗方法是一种

  • 我试着用蒙特卡罗模拟方法来计算一个事件发生的概率,在一个连续三次的10个事件列表中。我将进行100万次试验。事件发生的概率在任何时候都是31.43%。我的想法是,我将调用任何试验(b),并创建一个嵌套循环,因此如果条件一(rand值小于.3143),我将移动到索引中的下一个数字,如果该数字小于.3143,我将移动到下一个数字。如果发生这种情况,我会给火鸡加1。当100万次试验完成后,我将turke