• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

用随机投掷飞镖法计算Pi值(Randomness Throwing dart Pi Python)

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

画一个边长为r的正方形和半径为r的四分之一的圆(如下图所示),向上面随机投掷飞镖,通过计算落在星星区域和整体区域的飞镖比例,即可求出π值。

公式推导如下:

 

假设正方形的边长r为1,那么飞镖落在星星区域内的任意点(x, y),其坐标的平方相加值(x2+y2)必然小于1。

 

 代码如下:

import random

def find_pi(num_of_times):  #num_of_times为投掷飞镖的次数
    num1,num2=0,0    #num1为飞镖投掷在星星区域内的次数,num2为飞镖投掷在圆点区域内的次数
    for i in range(num_of_times):  #每次投掷飞镖后,飞镖落下的点坐标(x,y),都为0~1之间的浮点数
        x=random.random()
        y=random.random()
        if (x**2+y**2)<1: num1+=1  #如果其点坐标平方相加的值小于1,那么说明该飞镖落在圆弧区域内,num1增加一次,反之,num2增加一次
        else: num2+=1
    pi=(4*(num1/(num1+num2)))
    return pi

 

投掷1000000次飞镖试一下:

print(find_pi(1000000))

 

几次运行结果都已经和实际π值相差不大:

3.14326

3.140684

3.141544

 

参考:麻省理工学院公开课:计算机科学及编程导论(第20课)

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Google Dart编程语言学习(1)--语法和基本类型发布时间:2022-07-13
下一篇:
【QCon】Flutter+Dart 三端一体化开发发布时间:2022-07-13
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap