蒙特卡洛算法应用一

本文介绍了如何使用R语言实现蒙特卡洛算法,通过模拟投点法估算π的值,并解决射击问题,探讨了算法的思想和应用。通过大量随机抽样,得出π的近似值为3.15,并模拟了20次打击敌方炮排的情景,计算出有效射击率、平均击中炮数等统计结果。
摘要由CSDN通过智能技术生成

蒙特卡洛算法是常用的仿真算法,现借助R语言实现一些蒙特卡洛算法的应用。

一、蒙特卡洛方法测算π

1.1  原理:随机向单位正方形和圆结构抛洒大量点,对于每个点,可能在圆内或者在圆外,当随机抛洒点数量达到一定程度,圆内点将构成圆的面积,全部抛点将构成矩形面积。圆内点数除以所有点数就是面积之比,即π/4。随机点数量越大,得到的π值越精确。

1.2  程序:

zeros <- 0

k <- 0

darts <- 10^4  #决定精度

start <-proc.time()

x1 <- vector(mode = "numeric",length = 0)

y1 <- vector(mode = "numeric",length = 0)

x2 <- vector(mode = "numeric",length = 0)

y2 <- vector(mode = "numeric",length = 0)

for (i in 1:darts){

  x <- runif(1);y <- runif(1)

  if(sqrt(x^2+y^2) > 1) {k <- k+1;x2[k] <- x;y2[k] <- y}

  else{zeros <- zeros + 1;x1[zeros] <- x;y1[zeros] <- y}

}

pi <- 4*zeros/darts

proc.time()-start

print(paste0('pi is ',pi))

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值