用go语言刷算法 go语言数学计算( 二 )


这个方法源自概率论的基础,叫做蒙特卡洛法,形象一点的话我们也可以把它称为随机落点法,我们先说说它的原理:
我们先看看下面这张图
假设有图中的一个正方形和一个刚好套在它中间的圆形 , 可以很直观地看出:圆形的半径如果是R的话,正方形的边长就是2R 。
圆形的面积根据公式是Pi乘以R的平方,也就是 Pi × R × R = PiR2
正方形的面积根据公式是边长的平方,也就是(2R)×(2R)= 4R2
把两个式子相除一下,可以很容易地推算出来 , Pi = (圆形的面积 ÷ 正方形的面积)× 4
这样,就巧妙地把计算Pi值的问题转换成计算符合上面图中条件的圆形与正方形的面积之比的计算了 。
这时候,概率论可以出场发挥作用了,以及有了计算机之后,我们有的“随机数”这个武器!
假设我们随机在正方形范围内画一个点 , 那么这个点有可能落在圆形之中,也有可能落在圆形之外;然后我们重复这个动作,从概率论上来说,如果进行无限多次,那么落在圆形中的点的个数与所有已经画的点的个数之比 , 就应该是圆形的面积和正方形的面积之比 。看看下面这张图是不是就好理解了?
想想当里面的点数足够多的时候,就可以覆盖满整个原型和正方形 。俗话说:“以点带面”,这时候就可以理解成无数多的点组成了圆形和正方形的面积 。
好了,那么下面我们看看用计算机程序来实现这种方法计算圆周率的效果吧!我们这次选用Go语言(Golang)来实现这个算法 , 因为Go语言相对速度较快(比Python和Java等解释型语言要快得多),编写起来又比C语言更容易看懂 。
这段程序的运行结果是:
可以看出来,计算出来的圆周率Pi值越来越接近于我们所熟知的数字:3.1415……
神奇吧,为什么说人也可以算出来呢?假想在地上用粉笔画一个那样的正方形和圆形,然后我们随性地往里扔沙包吧!很童真的画面吧?
Go语言编程入门时需要注意什么刚入门Go语言小白需要注意以下五点用go语言刷算法:
1、注意书写代码的一些规范吧用go语言刷算法,特别是注意大小写、英文标点符号区别等用go语言刷算法,在特别的位置写上注释 。
2、主要是理解伪代码所描述的算法,伪代码要注意是不能直接运行的 。
3、注意编译器版本与书籍上所介绍版本是否一致,也注意特殊符号,印刷版本可能与实际不一致 。
4、书上的版本和当前所用的版本是否一致,有些情况下书上版本在现在来用已经过时了 。
5、逻辑走通;给自己信心,其实起步阶段不难的 。
利用go语言实现求数组交集的算法题目: 给定两个数组,编写一个函数来计算它们用go语言刷算法的交集.(来自leecode(349))
示例 1用go语言刷算法:
输入用go语言刷算法:nums1 = [1,2,2,1], nums2 = [2,2]输出:[2]示例 2:
输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出:[9,4]
说明:
我的解法:
题目同上,只不过在输出的时候
输出结果中每个元素出现的次数,应与元素在两个数组中出现的次数一致 。
示例 1:
输入:nums1 = [1,2,2,1], nums2 = [2,2]输出:[2,2]示例 2:
输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出:[9,4]
解法
如果给定的数组是排好序的,
arr1 = [1,2,3,4,4,13],arr2 = [1,2,3,9,10]
那这个返回值该如何获取得两个数组的交集呢?
解法
【用go语言刷算法 go语言数学计算】关于用go语言刷算法和go语言数学计算的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。

推荐阅读