博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
算法设计与分析-HomeWork
阅读量:6687 次
发布时间:2019-06-25

本文共 4412 字,大约阅读时间需要 14 分钟。

 

ex1(p20)

代码如下:

1 import random 2  3 def Darts(n): 4     k=0 5     i=1 6     while i<=n: 7         x=random.uniform(0,1) 8         #y=random.uniform(0,1) 9         y=x10         if(x**2+y**2<=1):11             k+=112         i+=113     return 4*k/n14 15 print(Darts(10000000))16 print(Darts(100000000))17 print(Darts(100000000))
View Code

结果如下:

物理意义:计算2*sqrt(2)  #如果结果输出的是2*k/n,则计算的是无理数sqrt(2)的近似值

 

ex2(p23)

代码如下:

1 import random 2 import math 3  4 def F(x): 5     return math.sqrt(1-x**2) 6  7 def CalPI(n): 8     k=0 9     i=110     while i<=n:11         i+=112         x=random.uniform(0,1)13         y=random.uniform(0,1)14         if (y<=F(x)):15             k+=116     return 4*k/n17 18 print("when n=10000000,PI=%.10f"%CalPI(10000000))19 print("when n=100000000,PI=%.10f"%CalPI(100000000))20 print("when n=1000000000,PI=%.10f"%CalPI(1000000000))
View Code

结果如下:

 

ex3(p23)

代码如下:

1 import random 2 import math 3  4 def F(x): 5     return x-1 6  7 def CalCalculus(a,b,c,d,n,function): 8     k_positive=0 9     k_negtive=010     i=111     while i<=n:12         i+=113         x=random.uniform(a,b)14         y=random.uniform(c,d)15         if (y>=0 and y<=function(x)):16             k_positive+=117         elif(y<0 and y>function(x)):18             k_negtive+=119     return (b-a)*(d-c)*(k_positive-k_negtive)/n20 21 if __name__=="__main__":22     function=F23     str=input("please input a,b,c,d:");24     ceof=list(str.split(" "))25     ceof=[int(i) for i in ceof]26     print(ceof)27     print("when n=1000000,res=%.10f"%CalCalculus(ceof[0],ceof[1],ceof[2],ceof[3],1000000,function))28     print("when n=10000000,res=%.10f"%CalCalculus(ceof[0],ceof[1],ceof[2],ceof[3],10000000,function))29     print("when n=100000000,res=%.10f"%CalCalculus(ceof[0],ceof[1],ceof[2],ceof[3],100000000,function))
View Code

结果如下:

p24 Ex4

 

 

ex4(p36)

代码如下:

1 # -*- coding: utf-8 -*- 2 """ 3 __title__ = '' 4 __author__ = 'jing' 5 __mtime__ = '2017/9/20' 6 # code is far away from bugs with the god animal protecting 7     I love animals. They taste delicious. 8               ┏┓      ┏┓ 9             ┏┛┻━━━┛┻┓10             ┃      ☃      ┃11             ┃  ┳┛  ┗┳  ┃12             ┃      ┻      ┃13             ┗━┓      ┏━┛14                 ┃      ┗━━━┓15                 ┃  神兽保佑    ┣┓16                 ┃ 永无BUG!   ┏┛17                 ┗┓┓┏━┳┓┏┛18                   ┃┫┫  ┃┫┫19                   ┗┻┛  ┗┻┛20 """21 import random22 import math23 24 def CalSetCount(setN):25     setTemp=set()26     k=027     a=random.choice(setN)28     while a not in setTemp:29         k+=130         setTemp.add(a)31         a = random.choice(setN)32     return k33 34 if __name__=="__main__":35     n=int(input("please enter n(the numbers of set):"))36     while n!=0:37         setN=range(0,n)38         i=039         kList=[]40         while i<1000:41             i+=142             kList.append(CalSetCount(setN))43         print("The estimated value of n is %.f"%(2.0*((sum(kList)/1000)**2)/math.pi))44         n = int(input("please enter n(the numbers of set):"))
View Code

结果如下:

随着n值的增大,误差存在着波动性,但整体趋势是越来越小的

p54

 p64 ex

1 import random 2  3 count=1 4  5 def Search(val,ptr,x,i): 6     global  count 7     count=1 8     while x>val[i]: 9         i=ptr[i]10         count=count+111     return i12 13 def A(val,ptr,x,head):14     return Search(val,ptr,x,head)15 16 def B(val,ptr,x,head):17     i=head18     max=val[i]19     for j in range(4):20         y=val[j]21         if max
y:43 return Search(val,ptr,x,ptr[i])44 else:45 return i46 47 48 49 val=[5,7,3,0,4,11,17,14,9,20,21,25,23,30,34,31]50 ptr=[1,8,4,2,0,7,9,6,5,10,12,13,11,15,-1,14] #the maxnum's index equats to -151 52 head=353 x=1154 print("C:x=11's position is %d.Compared %d times\n"%(C(val,ptr,x,head),4+count))55 print("A:x=11's position is %d.Compared %d times\n"%(A(val,ptr,x,head),count))56 print("B:x=11's position is %d.Compared %d times\n"%(B(val,ptr,x,head),4+count))57 print("D:x=11's position is %d.Compared %d times\n"%(A(val,ptr,x,head),count))58 59 x=3060 print("C:x=30's position is %d.Compared %d times\n"%(C(val,ptr,x,head),4+count))61 print("A:x=30's position is %d.Compared %d times\n"%(A(val,ptr,x,head),count))62 print("B:x=30's position is %d.Compared %d times\n"%(B(val,ptr,x,head),4+count))63 print("D:x=30's position is %d.Compared %d times\n"%(A(val,ptr,x,head),count))

 

 

转载于:https://www.cnblogs.com/acm-jing/p/7512624.html

你可能感兴趣的文章
手把手教你webpack、react和node.js环境配置(上篇)
查看>>
Redis集群搭建与简单使用(四)
查看>>
scrapy 使用实例
查看>>
Laravel服务容器
查看>>
解读1.13.1 | 探究Docker Stack和可对接网络
查看>>
自动化部署打破混乱之墙 助力开发、运维、测试协同作战
查看>>
GitHub服务中断24小时11分钟事故分析报告\n
查看>>
华为敏捷DevOps实践:如何从Excel管理软件的方式中走出来
查看>>
安全狗:云时代的服务器安全守护者
查看>>
百度App网络深度优化系列(二):连接优化
查看>>
AWS发布Lambda@Edge,支持在CloudFront CND的边缘服务器上执行Node.js函数
查看>>
Eclipse基金会发布MicroProfile 2.2,适用于Java微服务
查看>>
NuGet已整合到MSBuild中
查看>>
JetBrains发布DataGrip 1.0——数据库与SQL领域中的瑞士军刀
查看>>
Lightbend就收购OpsClarity一事与InfoQ的对话
查看>>
在瑞士最大银行驱动创新
查看>>
新书问答:Agile Management
查看>>
Spark 2.4重磅发布:优化深度学习框架集成,提供更灵活的流式接收器
查看>>
专访赵加雨:WebRTC在网易云信的落地
查看>>
VS2017 15.8第二个预览版本提升了对CPU Profiling和F#的支持
查看>>