高等数理统计实验报告
概率论与数理统计应用实验报告

概率论与数理统计应用实验报告
概率论与数理统计是中国大学MOOC《数据科学导论》课程中的一门关键科目,为了加深熟悉概率论与数理统计的过程,我完成了在R语言环境下的相关实验并撰写了这份报告。
实验过程以R Studio为平台。
R studio是一款跨平台,开源的编程环境,可以天然
地支持R语言,为我们提供卓越的实验环境。
所有的实验操作都是在R Studio上进行的。
实验分两步,第一步是正态分布的实验,第二步是对多项式分布的实验。
正态分布的实验
首先,我们构造了1000000以内随机整数,范围为-500000到500000。
将这些整数绘
制灰度图,来查看各项数据的分布情况,数据在中心出现了最多,并且随着两端逐渐减少,绘出的图像符合正态分布的分布曲线,即右尾巴更长。
此外,我们还对构造出的数据进行
正态性分析,使用R语言中的hist函数来绘制正态分布的柱状图,根据结果可以清楚地
看出,数据的分布也是符合正态分布的,由此也证明了构造数据的正确性。
多项式分布的实验
我们首先运用随机数生成器在R语言环境下,构造出多项式分布的数据,将生成的数
据进行灰度图展示,发现随着两端的和逐渐增加,形成非对称的多项式分布的曲线。
同时,我们运用R语言中的hist函数来检验再次检验多项式分布,结果也确实符合多项式分布,从而证明以上步骤是正确的。
经过上述实验,我加深了对概率论与数理统计的熟悉。
构建统计数据,运用R Studio 画出统计图来检验和证明数据是否符合正态分布和多项式分布使我对概率论和数理知识有
了更为深刻的认识,也为今后解决数据科学相关的科学问题奠定基础。
数理统计报告

数理统计浅谈前言数理统计学是统计学的数学基础,从数学的角度去研究统计学,为各种应用统计学提供理论支持。
它研究怎样有效地收集、整理和分析带有随机性的数据,以对所考察的问题做出推断或预测,直至为采取一定的决策和行动提供依据和建议的数学分支。
概率论作为一门研究随机现象统计规律的数学学科,已在包括控制,通讯,生物,力学,金融,社会科学以及其他工程技术等领域得到了广泛的应用。
当然上面这一段是百度的我承认,但我还要承认的是,通过这一学期的数学课程,真的对数理统计有了更深的认识,虽然本科也学过概率论与数理统计,但是这一期又对本科学习的课程进行了深入,其实之前对数学也不是很感兴趣的,不过万老师的讲解真的很幽默风趣,把数学知识和生活中的例子联系了起来,我感觉我还是学到一点东西的,虽然我学到的可能仅仅是皮毛,所以我这篇论文其实也不能称之为真正的论文,只是对我所学的东西进行一下总结,其中很多都是出自在老师课堂上面记下的笔记,所以在这里要真心地谢谢万老师这一学期孜孜不倦的教导!一、概述数理统计是以概率论为基础,根据实验或观察到的数据,研究如何利用有效的方法对这些已知的数据进行整理、分析和推断,从而对研究对象的性质和统计规律做出合理和科学的估计和判断。
在自然科学、军事科学、工农业生产、医疗卫生等领域,哪一个门类都离不开数理统计。
数理统计学内容庞杂,分支学科很多,难于做出一个周密而无懈可击的分类。
大体上可以划分为如下几类:(1)特定的统计推断形式,如参数估计和假设检验。
(2)特定的统计观点,如贝叶斯统计与统计决策理论。
(3)特定的理论模型或样本结构,如非参数统计、多元统计分析、回归分析、相关分析、序贯分析,时间序列分析和随机过程统计。
二、参数估计参数估计是指总体分布已知,其中全部或部分参数未知的情景下,利用样本信息对这些未知参数进行的统计推断。
涉及:(1)估计形式:点估计、区间估计(2)点估计的方法、依据、算法、使用对象和评价。
数理统计学实验报告【范本模板】

数理统计学实验报告院:专业:班级:学号:学生姓名:指导教师姓名:实验日期:实验11950~1983年我国三类产品出口总额及其构成年份出口总额(亿元)其中工矿产品农副产品加工品农副产品金额(亿元)占总额%金额(亿元) 占总额%金额(亿元)占总额%195020。
21。
99。
4 6。
733。
2 11。
657.4195548.712。
425。
5 13.828.4 22.546.1196063.316。
926.7 26.842.3 19.631。
0196563。
119。
530.9 22。
736.0 20。
933。
1197056。
814.525.6 21。
437。
7 20.936.7 197514356.239.3 44.531.1 42。
329.6 1980282。
4141。
151.8 90。
4 29。
550.918。
7 1983434。
5249.457.4 11626。
7 69。
115.9用表中的资料,按以下要求绘制图表:(一)用表中1950、1960、1970、1980四年三类产品的出口金额绘制分组柱形图,然后将图复制到Word文档.(二)用表中1950和1980两年三类产品的出口金额占总金额的百分比,分别绘制两幅饼图, 然后将图复制到Word文档;(三)用1950、1960、1970、1980四年三类产品出口金额绘制折线图, 然后将图复制到Word文档。
(四)将以上一张表、三幅图联系起来,结合我国当时的历史背景写一篇300字左右的统计分析报告。
(一)(二)1950:1980:(三)(四)总结建国初期,我国对外贸易仅限于原苏联和东欧等前社会主义国家,对外贸易规模极其有限,基本上处于封闭半封闭状态。
1950年,出口额极少,以农副产品为主的出口占我国出口总额的百分之五十八,而工矿产品的出口极少只占百分之九。
随着经济发展,出口额增长,工矿产品的出口额增长迅速,而出口产品以农副产品加工品为主.改革开放以来,我国走上了对外开放之路,从大规模“引进来”到大踏步“走出去”,一跃而成为世界对外贸易大国。
数理统计实验报告

数理统计实验报告
班级: 姓名: 学号: 成绩:
【实验设备】
pc 机,2.6G/1G/60G ,winxp/win2000; 统计软件EXCEL2003
【实验目的】
通过数理统计试验,学会用EXCEL 软件解决数理统计中的计算问题。
【实验内容】
1.用软件进行区间估计计算;
2.用软件进行假设检验计算;
3.用软件进行线性回归分析计算;
【实验问题】
一、人的身高服从正态分布,从某校大一女生中随机抽取20名,测得身高如下: (单位:cm )149 158.5 152.5 165 157 142 166 168 170 177 160 161.2 157.5 164 178 165 159 162 166 169
求某校大一女生平均身高的置信区间。
二、总体),(~2σμN X 的某种漆其干燥时间(以h 计)的9个样本分别为
6.0 5.7 5.8 6.5
7.0 6.3 5.6 6.1 5.0
试求: 总体方差2σ(2
σ=0.36)的置信度为0.95的假设检验.
三、P267.10.(1)(2)(3)求相关系数r
【实验过程与步骤】。
高数 实验报告

高数实验报告高数实验报告引言:高等数学是大学数学的一门基础课程,它在培养学生的逻辑思维能力、分析问题的能力以及推理能力方面发挥着重要作用。
在高数课程中,实验是一种重要的教学手段,通过实验可以帮助学生更好地理解和应用数学知识。
本篇实验报告将介绍我参与的一次高数实验,并分享其中的心得体会。
实验目的:本次实验的目的是通过实际操作,加深对数列和级数的理解,并掌握相应的计算方法。
同时,通过实验过程中的观察和分析,培养学生的数学建模能力和解决实际问题的能力。
实验过程:实验开始前,我们小组成员首先进行了讨论,确定了实验的具体内容和步骤。
我们选择了两个具体的数列和级数问题进行研究。
第一个问题是求解一个递推数列的通项公式。
我们首先观察数列的前几项,发现数列中的每一项与前一项之间存在着一定的关系。
通过分析这种关系,我们猜测数列的通项公式,并通过数学归纳法进行验证。
最终,我们成功地找到了数列的通项公式,并通过计算验证了其正确性。
第二个问题是求解一个级数的和。
我们选择了一个著名的几何级数进行研究。
通过观察级数的前几项,我们发现级数中的每一项与前一项之间存在着一定的比例关系。
根据这种关系,我们得出级数的和的公式,并通过计算验证了其正确性。
实验结果:通过实验,我们成功地求解了两个数列和级数的问题,并得到了相应的结果。
这些结果不仅帮助我们更好地理解了数列和级数的概念,还提高了我们的计算能力和问题解决能力。
心得体会:通过参与这次高数实验,我深刻体会到了实践对于学习的重要性。
在实验过程中,我们不仅仅是被动地接受知识,更是主动地去探索和发现。
通过观察、分析和计算,我们能够更加深入地理解数学知识,并将其应用到实际问题中去。
此外,实验还培养了我们的团队合作能力和沟通能力。
在小组讨论中,我们需要相互协作,共同解决问题。
通过合作,我们不仅能够更好地理解和应用数学知识,还能够互相学习和促进成长。
总结:通过这次高数实验,我不仅加深了对数列和级数的理解,还提高了自己的数学建模能力和问题解决能力。
大学本科概率论与数理统计实验报告

xx大学xx学院数学类课程实习报告课程名称:概率论与数理统计实习题目:概率论与数理统计姓名:系:信息与计算科学系专业:信息与计算科学年级:2010学号:指导教师:职称:讲师年月日福建农林大学计算机与信息学院数学类课程实习报告结果评定目录1实习的目的和任务 (2)2实习要求 (2)3实习地点 (2)4主要仪器设备(实验用的软硬件环境) (2)5实习内容 (2)5.1 MATLAB基础与统计工具箱初步 (2)5.2 概率分布及应用实例 (4)5.3 统计描述及应用实例 (5)5.4 区间估计及应用实例 (8)5.5 假设检验及应用实例 (11)5.6 方差分析及应用实例 (13)5.7 回归分析及应用实例 (15)5.8 数理统计综合应用实例 (18)6 结束语 (26)7 参考文献 (27)概率论与数理统计(Probabilily theroy and Mathemathical Statistics)1.实习的目的和任务目的:通过课程实习,让学生巩固所学的理论知识并且能够应用MATLAB数学软件来解决实际问题。
任务:通过具体的案例描述,利用MATLAB软件计算问题的结果,作出图形图象分析问题的结论。
2.实习要求要求:学生能够从案例的自然语言描述中,抽象出其中的数学模型,能够熟练应用所学的概率论与数理统计知识,能够熟练使用MATLAB软件。
3.实习地点:校内数学实验室,宿舍4.主要仪器设备计算机Microsoft Windows XPMatlab 7.05.实习内容5.1 MATLAB基础与统计工具箱初步一、目的:初步了解和掌握MATLAB的操作和统计工具箱的简单应用.二、任务:熟悉MATLAB的基本命令的调用和基本函数及其基本操作.三、要求:掌握安装MATLAB的方法,并运用统计工具箱进行简单MATLAB编程.四、项目:(一)、实例:产生一组试验,假设随机变量X的分布函数为X~N(10,42)的随机数,并绘出该正态分布的图像。
数理统计学实验报告 实验二

西北农林科技大学实验报告学院名称:理学院专业年级:姓名:学号:课程:数理统计学报告日期:实验二一.实验目的1.利用样本数据推断储户总体一次平均存款金额是否为2000元。
并求置信区间(自己确定置信水平)。
检验城镇储户与农村储户一次平均存款金额是否无显著差异。
2.利用样本数据推断保险公司具有高等教育水平的员工比例小于等于0.8.3.利用样本数据检验减肥茶是否有明显的减肥作用。
二.实验要求1.学会用spss比较均值,并求出置信区间.三.实验内容(一)利用样本数据推断储户总体一次平均存款金额是否为2000元。
并求置信区间(自己确定置信水平)。
检验城镇储户与农村储户一次平均存款金额是否无显著差异。
1、用spss软件打开所给文件“居民储蓄调查数据(存款)”。
2、在数据视图界面点击分析->比较均值->单样本T检验,把题目要求的“存取款金额[a5]”加入到检验变量中,在检验值处填2000(如图所示)。
点击粘贴,会得到一串代码如下:DATASET ACTIV ATE 数据集1.T-TEST/TESTV AL=2000/MISSING=ANALYSIS/V ARIABLES=a5/CRITERIA=CI(.95).点击运行->全部,就能得到所求“样本数据推断储户总体一次平均存款金额是否为2000元。
并求置信区间(自己确定置信水平)。
”的结果(如图所示)。
3、回到数据视图界面,点击分析->比较均值->独立样本T检验,按要求把“存取款金额[a5]”加入到检验变量中,把户口[a13]加入到变量中。
根据变量视图中a13的值标签显示1=“城镇户口”,2=“农村户口”(如图所示)所以在把户口[a13]加入到变量中之后点击定义组,在使用指定值处分别填“1”,“2”(如图所示)。
最后点击确定,得到所求“检验城镇储户与农村储户一次平均存款金额是否无显著差异。
”的结果(如图所示)。
(二)利用样本数据推断保险公司具有高等教育水平的员工比例小于等于0.8。
高数实验报告

高等数学实验报告实验人员:院系:学号:姓名:实验地点:计算机中心机房实验一:1、实验题目:观察二次曲面族的图形,特别注意确定k的这样一些量,当k经过这些值时,曲面从一种类型变成了另一种类型。
2、实验的目的和意义:熟练运用数学软件Mathematica绘制三维图形来观察空间曲线和曲面的图形特点,以加强集合的直观性。
3、程序设计:For[k = -3, k <= 3,k++, Plot3D[x^2 + y^2 + k*x*y, {x, -20, 20}, {y, -20, 20},AxesLabel -> {"X", "Y", "Z"}, PlotPoints -> 30]]4、程序运行结果:K=-3 k=-2k=-1 k=0k=1 k=2k=35、结果的讨论及分析:K有变化,图形就会改变,当k=0,改变曲面类型。
实验二:1、实验题目:观察函数,展成的Fourier级数的部分和和逼近f(x)的情况。
2、 实验的目的和意义:用Mathematica 显示级数部分和的变化趋势;学会如何利用幂级数的部分和对函数进行部分逼近以及函数值得近似计算;展示Fourier 级数对周期函数的逼近情况。
3、 程序设计:设()x f 是以2T 为周期的周期函数,在任一周期内,)(x f 除在有限个第一类间断点外都连续,并且只有有限个极值点,则)(x f 可以展开为Fourier 级数:∑∞=++10)sin cos (2n n n T x n b T x n a a ππ,其中⎪⎩⎪⎨⎧====⎰⎰--T T n T Tn n dx T xn x f T b n dx T x n x f T a,3,2,1 ,sin )(1,2,1,0 ,cos )(1ππ,且Fourier 级数在任一x 0处收敛于2)0()0(00++-x f x f 。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《高等数理统计》实验报告一、实验目的不同分布的随机数生成原理及其算法实现二、实验内容1.针对均匀分布的随机数生成原理及算法实现2.以指数分布为例的反函数方法的随机数生成3.针对正态分布的随机数生成原理及算法实现4.基于Box–Muller算法的随机数生成及算法实现5.基于舍选抽样法算法的随机数生成及算法实现三、实验过程1.均匀分布随机数生成方法一:迭代取中法原理:这里在迭代取中法中介绍平方取中法 , 其迭代式如下 :X n+1=X n210s(mod102s)R n+1=X n+1/102s其中,X n+1是迭代算子,而R n+1则是每次需要产生的随机数。
第一个式子表示的是将X n平方后右移 s 位,并截右端的 2s 位。
而第二个式子则是将截尾后的数字再压缩 2s 倍,显然 :0≤R n+1≤1。
注:迭代取中法有一个不良特性就是若初始随机数参数 s 以及初始值 X0选择不恰当,最后结果容易退化成0.附结果验证:(1)当初始值为123456,s=2时,部分结果如下,所有结果均不退化为0(2)当初始值为12345,s=2时,部分结果如下:注:当迭代次数达到48次时,随机数则退化为0(3)当初始值为12345,s=1时,部分结果如下:注:当迭代次数达到4次时,随机数则退化为0方法二:乘同余法X n+1= λ∗X n(mod M)R n+1=X n/M其中,X n+1是迭代算子,而R n+1则是每次需要产生的随机数,λ为参数;注:这里的参数选取是需要一定理论基础的,否则所产生的随机数的周期将较小,相关性会较大。
附图:当迭代次数为300次时,p值为0.54:当迭代次数为1000次时,p值几乎为1方法三:混合同余法(又称线性同余法LCG )混合同余法是加同余法和乘同余法的混合形式,其迭代式如下 X n+1=(λ∗X n +μ)(mod M) R n+1=X n /M其中,X n+1是迭代算子,而 R n+1 则是每次需要产生的随机数,λ 为参数; 一般而言,高 LCG 的 m 是2的指数次幂(一般2^32或者2^64),因为这样取模操作截断最右的32或64位就可以了在 M =2q 的条件下,参数 λ,μ,X 0按如下方式选取: λ=2c +1,c 取 q/2 附近的数μ=(12+√3)/MX 0为任意非负整数注:参数 λ,μ, X 0 选取直接影响了伪随机数产生的质量该随机数的生成方法在某一周期内成线性增长的趋势,但是在大多数场合,这种极富“规律”型的随机数是不适用的使用场合:LCG 不能用于随机数要求高的场合,例如不能用于Monte Carlo 模拟,不能用于加密应用。
不过有些场合LCG 有很好的应用,例如内存很紧张的嵌入式中,电子游戏控制台用的小整数,使用高位可以胜附结果验证:当迭代次数为1000时,p 值几乎为12.反函数法:采用概率积分变换原理,对于随机变量X的分布函数. F(X)可以求其反函数,得:X i=G(R i )其中, R i为一个[0,1]区间内的均匀分布的随机变量.当 F(X)较简单时,求解较易,当F(X)较复杂时,可能需要用到较为复杂的变换技巧。
这里以指数分布为例,则指数分布的 λ 取1.附结果及 p 值:3.利用中心极限定理生成正态分布随机数独立同分布、且数学期望和方差有限的随机变量序列的标准化和以标准正态分步为极限。
若ξ1,ξ2,⋯,ξn是一串独立同分布的随机变量序列,且有E(ξ)=m,D(ξk)=σ2标准化随机变量和ξk=∑(k) nk=1σ√n若0<σ2<∞,则有lim n→∞P(ξn<x)=1√2πe−t2/2dtx−∞又ξk~U̅(0,1)所以E(ξk)=12,σ2=112所以n=12附结果:4.Box –Muller 算法 原理:Box –Muller 算法实际上是依据瑞利分布来求标准正态分布的反函数。
我们知道标准正太分布的反函数是求不了的,但标准正态分布经过极坐标变换后却是可以求得反函数的 ,有2种形式:(1)基本形式:用 (0,1) 均匀分布随机数,需要计算三角函数 sin 和 cos 值 (2)极坐标形式:用(−1,1)均匀分布随机数,且不需要计算三角函数 我们计算积分I =∫e −x2/2dx +∞−∞,可以先取它的平方并用极坐标表示,I 2=∫∫e−(x 2+y 2)/2+∞−∞dx +∞−∞dy =∫∫re r2/2drdθ∞02π可以发现极角 θ 服从(0,2π)均匀分布,径向距离 r 服从 re r 2/2分布函数(即 r 2 服从 χ2分布),如果将 r 的累积分布函数写出来,即F (x )= ∫re r2/2dr x0=1−e −x2/2我们就可以通过 F 的逆函数 F −1(u ) ,将均匀分布 u~U (0,1) 映射到目标分布,即 x =√−2ln(1−u),也等价于x =√−2ln (u)(注意到如果 u~U (0,1),那么 1−u 也是),则 产生相互独立的服从[0,1]均匀分布的随机数U 1,U 2,令α=(−2lnU 1)1/2cos 2πU 2 β=(−2lnU 1)1/2sin 2πU 2则 α,β是相互独立的 N (0,1) 随机数 其中,由(−2lnU 1)1/2生成服从Rayleigh 分布的随机变量 由2πU 2生成服从(0,2π)的均匀分布的随机变量 附结果验证:5.舍选抽样法(Rejection Method)用反函数法生成随机数时,如果求不出 F−1(x)的解析形式或者F(x)就没有解析形式,则可以用 F−1(x)的近似公式代替。
可以考虑由Von Neumann提出的舍选抽样法。
原理:构造一个新的密度函数 q(x),使它的形状接近 p(x),并选择一个常数 k 使得kq(x)≥p(x)对于 x 定义域内的值都成立。
对应下图,首先从分布q(z)中生成随机数 z0,然后按均匀分布从区间[ 0, kp(z0)]生成一个随机数 u0。
如果 u0>p(z0),则拒绝该样本,否则保留.下图中灰色区域内的点都要舍弃。
由于随机点 u0只出现在曲线 kq(x)之下,且在 q(x)较大处出现次数较多,从而大大提高了采样效率。
显然 q(x)形状越接近 p(x),则采样效率越高。
算法过程:1.从分布 q(x)中随机取一个数 x2.从均匀分布[0,1]中随机抽取一个数 y3.如果 y <p(x)/kq(x),则接受该样本(x,y),否则就拒绝该样本。
4.重复上述步骤附结果图:附python代码:(1)import numpy as npdef function(x_n,s,iteration):for i in range(iteration):x_n=((x_n**2)/np.power(10,s))%np.power(10,2*s)R_n=x_n/np.power(10,2*s)print(R_n)def main(x_n,iteration,s=2):function(x_n,s,iteration)if __name__ == '__main__':main(x_n=123456,iteration=100,s=2)(2)import numpy as npimport matplotlib.pyplot as pltfrom scipy.stats import kstestset=[]def function(x_n,iteration,lambd,M,epsilon=1e-6):for i in range(iteration):x_n=(x_n*lambd)%MR_n=x_n/Mprint(R_n)set.append(R_n)def main():lambd=np.power(5,5)M=np.power(2,12)function(x_n=12345,iteration=300,lambd=lambd,M=M)if __name__ == '__main__':main()plt.hist(set, bins=10)plt.show()plt.plot(np.arange(1, 301, 1), set)plt.show()p=kstest(set,'uniform')print(p)(3)import numpy as npimport matplotlib.pyplot as pltfrom scipy.stats import kstestdef function(x_n,iteration,lambd,M,mu,epsilon=1e-6):for i in range(iteration):x_n=(x_n*lambd+mu)%MR_n=x_n/Mprint(R_n)def main():lambd=np.power(2,16)+1M=np.power(2,32)mu=(0.5+np.sqrt(3)/6)/Mfunction(x_n=12345,iteration=1000,lambd=lambd,M=M,mu=mu) if __name__ == '__main__':main()plt.hist(set, bins=10)plt.show()plt.plot(np.arange(1, 1001, 1), set)plt.title('迭代次数为1000次')plt.show()p=kstest(set,'uniform')print(p)(4)import numpy as npnp.random.seed(666)#随机数种子n=100y=np.random.uniform(0,1,n)#(0,1)均匀分布随机数def exponential_random_numbers(Lambda):try:x=-1/Lambda*np.log(1-y)return xexcept:return np.zeros(len(y))np.set_printoptions(suppress=True)ern=exponential_random_numbers(Lambda=1)s=np.var(ern)print('方差var:',s)(5)import matplotlib.pyplot as pltimport seaborn as snssns.distplot(ern,bins=20,kde=True, fit=expon)plt.title('指数分布随机数直方图,n=1000,var=%.4f' %s) plt.ylabel('频率')plt.xlabel('x')plt.show()(6)import numpy as npfrom scipy.stats import normnorm_num=[]n=10000for i in range(n):s=0for n in range(12):x=np.random.random()s=s+xy=s-6norm_num.append(y)print(len(norm_num))import matplotlib.pyplot as pltimport seaborn as snssns.distplot(norm_num,bins=20,kde=False,fit=norm)plt.title('标准正态分布随机数直方图,n=10000')plt.ylabel('频率')plt.xlabel('x')plt.show()from scipy.stats import kstestp=kstest(norm_num,'norm')print(p)(6)import numpy as npimport mathfrom scipy.stats import normnorm_nums=[]for i in range(1000):x=np.random.random()y = np.random.random()z=(-2*math.log(x))**(1.0/2)*math.cos(2*math.pi*y) norm_nums.append(z)import matplotlib.pyplot as pltimport seaborn as snssns.distplot(norm_nums,bins=20,kde=False,fit=norm) plt.title('Box–Muller算法,n=10000')plt.ylabel('频率')plt.xlabel('x')plt.show()from scipy.stats import kstestp=kstest(norm_nums,'norm')print(p)(7)from scipy.stats import kstestfrom scipy import *import matplotlib.pyplot as pltp = lambda x: np.exp(-x) # our distributiong = lambda x: 1/(x+1)# our proposal pdfCDFg = lambda x: np.log(x +1)xmin = 0xmax = 8umin = CDFg(xmin)umax = CDFg(xmax)N = 10000accepted = 0samples = np.zeros(N)count = 0while (accepted < N):u = np.random.uniform(umin, umax)xproposal = np.exp(u) - 1y = np.random.uniform(0, 1)if y < p(xproposal)/g(xproposal):samples[accepted] = xproposalaccepted += 1count +=1hinfo = np.histogram(samples,30)plt.hist(samples,bins=30)xvals=np.linspace(xmin, xmax, 1000)plt.plot(xvals, hinfo[0][0]*p(xvals), 'r', label=u'p(x)') plt.legend()plt.show()p=kstest(samples,'expon') print(p)。