打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
scala计算π近似值

项目中用到了蒙特卡洛算法,之前没有接触过,还比较陌生.于是学习了一番,用Scala实现了一个经典的例子:计算π的近似值.

网上搜索了下,蒙特卡洛(Monte Carlo)算法起源于二战时研制原子弹的”曼哈顿计划”,创始人之一就有大名鼎鼎的冯诺依曼大牛.蒙特卡洛是以一个赌城的名字命名的(还有一个相关的算法叫拉斯维加斯算法).

算法的主要思想,如果用学术的语言来描述比较难明白,使用经典的计算π的近似值的例子来说明,则比较好理解.
计算思路如下图,这里用scala语言实现算法.

object TestMonteCarlo {  def main(args: Array[String]): Unit = {    println(calculatePi(10000000))  }  def calculatePi(sampleSize:Int = 10000):Double = {    val radius = 1.0;    val cycleCenter = (1.0,1.0)    val (x0,y0) = cycleCenter    val random:util.Random = new util.Random()    val loop =  1 to sampleSize    var pointInCycle = 0    loop.foreach(_ => {      val randomPoint = (random.nextDouble() * 2,random.nextDouble() * 2) //      val (x1,y1) = randomPoint      val disToCenter = Math.sqrt(Math.pow(x1-x0,2) + Math.pow(y1 - y0 ,2))      if(disToCenter <= radius) { pointInCycle += 1 }    })    println(s"point In Cycle = ${pointInCycle}")    (pointInCycle * 4) * 1.0 / sampleSize  }}
赞 赏

本文固定链接: https://www.jack-yin.com/coding/scala/2718.html | 边城网事

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
Python实现蒙特卡罗方法
使用Gatling做web压力测试
统计学基础 | 重复抽样
自学3天就击败“前辈” 专业解读AlphaGo Zero的工作原理
Python笔记分享:用Python实现基于蒙特卡洛算法小实验
蒙特卡洛算法
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服