【每周一坑】暴力计算圆周率 +【解答】生成/识别二维码

我们之前有出过一些和概率相关的问题。比如 几道有趣的概率题三门问题田忌赛马蜥蜴流感与贝叶斯定理。我讲过,用计算机程序来解编程题有个很有意思的思路,就是暴力解法。就是利用电脑的计算能力,去模拟大量的情况(甚至所有情况),得出统计数据。这种方法虽然从数学角度来说不是绝对和精确的,但可以很方便地应付很多需求,以及作为计算结果的辅助验证。

更重要的一点,这种方法是非常的程序员思维,没接触过编程的人往往不会想到还可以用这种方式来解决问题。因此我也经常会提及此类问题。

今天我就再来抛一个问题:计算圆周率 π

古人发明了“割圆法”求圆周率。学过高等数学应该知道,π 可以通过无穷级数来精确计算。而有了计算机之后,我们还可以有更多种尝试。比如之前我也写过一篇 一个略奇葩的计算圆周率的程序,就是通过模拟布丰投针实验来粗略计算 π。除此之外,还可以有其他方法,这里给两个思路:

1、假设 R 为半径,生成 2R x 2R 的点阵,即 x = [-R, R], y = [-R, R],根据圆的定义:在同一平面内,到定点的距离等于定长的点的集合。可以计算出这些点里,哪些点属于圆的内部。当点数足够多时,这些点的数量就可以近似地看做圆的面积。再根据圆面积公式 S = π R²,就可以反推出 π 的近似值。

2、思路同上一条类似,但不再使用规则点阵,而是在 [-R, R] 的范围内生成大量随机的点。最后根据圆内与圆外点的数量比例,推算 π 的近似值。这种采样方法也就是大名鼎鼎的蒙特卡洛方法(Monte Carlo method)

你可以用上述的方式,也可以用你自己的方式,尝试算一下 π。

期待各位同学提交解答。详细解答和参考代码将在下次栏目中给出,也可以其他同学在留言中的代码。

提交代码可以使用 paste.ubuntu.com 或 

codeshare.io 等代码分享网站,只需将代码复制上去保存,即可获得一个分享地址,非常方便。

(0)

相关推荐

  • 孩子有自残自伤行为,我该怎么办?

    14岁的渥渥是一名重度自闭症患者,在3岁的某一天突然毫无征兆地把小脑袋撞向地板,撞得咯噔咯噔地响,这是他自残的开始. 渥渥的妈妈说,他喜欢把胳膊往嘴里放,然后一口一口咬下去,咬破皮咬出血都不会停下,反 ...

  • 婚姻中最可怕的不是出轨、吵架,而是...

    ♪ 点击上方按钮 即可观看川哥今日讲述 如果你遇到了情感危机 欢迎加我微信 读者来信 许川老师,我真想不通我老公这个人,为什么会这样冷血无情!要不然离婚算了. 您知道吗?我们吵架,不管谁对谁错,他从不 ...

  • 【每周一坑】生成/识别二维码 +【解答】新个税计算器

    二维码的本质是将文本信息转化成符合一定格式的平面图片信息,以便于计算机/手机通过摄像头或扫码设备快速而准确地识别,实现信息的传递.从某种角度来说,二维码可算是打通次元壁的途径,将互联网与现实世界更便捷 ...

  • 广西二维码制作软件,条码生成,二维码生成,产品防伪标签

    怎么生成制作条码? 1.新增产品先进行条码备案 2.首先根据主题主义的提问,不知道该制作什么条形码.如果是商品尺寸的话,请在网上搜索相关资料.如果是包含在产品标签上印刷或粘贴的产品信息.价格等的条形码 ...

  • 不同的软件,不同的平台,是怎么保证生成的二维码都不雷同的?

    要想了解为什么二维码可以存储那么多信息,或者拥有如此多排列可能,每天要生成那么多二维码,为什么不会有一模一样的生成呢!我们要先了解二维码的生成原理和工作方式. 二维码又称QR Code,QR全称Qui ...

  • 【每周一坑】三国演义中谁的存在感最强 +【解答】暴力计算圆周率

    自然语言处理(NLP)是人工智能的一个重要领域.在对中文做自然语言处理的时候,一个很基础的操作就是分词:因为中文不像英语有现成的单词划分,需要将汉字序列切分成一个个单独的词,以便于后续的处理和分析. ...

  • 【每周一坑】数据库 +【解答】自动翻译

    我们的系列坑 单词本 今天继续第3期. 上次我们的目标是加入自动翻译,需要用到网络接口,可以看作是一个最简单的爬虫.详细方法稍后分析,先来谈谈今天的任务: 使用数据库存储单词数据 交互效果与之前相同, ...

  • 【每周一坑】自动翻译 | 【解答】单词本

    上次我们挖了一个系列坑:[每周一坑]单词本. 第一期的目标,是实现控制台下的单词录入及保存功能.各位都有实现吗?在本文后半段,我们会来做具体分析. 在这之前,先给出新的目标: 自动给添加的单词增加翻译 ...

  • 【每周一坑】单词本 +【解答】三国演义中谁的存在感最强

    "每周一坑"这个系列在本教室的文章中,阅读量不算高.但我屡次在和读者沟通时听到说"我都有跟着每周一坑里的题在做".这是个有意思的普遍现象:内容的价值和传播度并不 ...

  • 生成自己的微信支付二维码的方法

    卡饭网梦在深巷2013-09-30 07:13:50 1.打开微信,点击右下角[我],选择钱包,再点击左上角[转账]. 2.点击[面对面收钱],然后点击右上角[设置金额]. 3.输入金额(最高支持50 ...

  • Excel自带控件批量生成条形码或二维码

    ▎具体需求 根据A列信息,批量生成二维码或者条形码. ▎思路分析 我们这里使用Excel自带的二维码条形码控件搭配VBA,实现批量生成的效果. ▎具体步骤 ①由于二维码控件不是默认控件,需要单独找到添 ...