ipyparallel 中的 pi的求法

1.PI的求法的数学依据

如图,可以看见在边长为1的正方形里面,有一个1/4圆,我们随机在正方形中取点,点在圆内的概率和点在正方形内的概率之比正好为两者的面积之比.这样就有在圆内的点的数目比所有点的数目值应该为0.25*π*1/1=0.25π.只要我们随机取点的数目足够多,根据上述关系求得的π的精确率就越高.我们最终可以得到π=4*在圆内的点的数目/所有点的数目,据此,可以写出如下程序:

from numpy.random import rand
def sample(n):
    return (rand(n)**2+rand(n)**2<=1).sum()
n=1000000
pi=4*sample(n)*1.0/n
print pi

输出:3.140556(此值可能会变化)

根据上述程序,可以将求π的程序改写成并行版本:

from ipyparallel import *
rc=Client()
dview=rc[:]
with dview.sync_imports():
    from numpy.random import rand
def sample(n):
    return (rand(n)**2+rand(n)**2<=1).sum()
n=1000000
list=[n]*len(dview)
#list 由 len(dview)个n构成,正好每一个engine一个
pi=4*sum(dview.map_sync(sample,list))*1.0/(n*len(dview))
print pi

输出:3.141763(每次输出都不一样)

 

转载于:https://www.cnblogs.com/zhoudayang/p/5101419.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值