python day 8 random库 与 蒙特卡洛方法

久未见 提交于 2019-12-04 22:07:56

Random

一、概述

1.Random库是使用随机数的python标准库

2.生成的实际上是伪随机数。采用梅森旋转算法生成。

3.两类函数,常用的有8

(1)基本随机函数:seed(),random()

(2)扩展随机函数:randint(),getrandbits(),uniform(),randrange(),choice(),shuffle()洗牌

二、基本随机函数

1.Seed()

(1)随机数种子,相当于赋值给梅森旋转中的变量,生成一个梅森旋转序列。默认值为当前的系统时间。

(2)如果随机数种子相同,那么会按特定顺序,生成相同的随机数,也就是说,可以实现代码之前执行情况的复现。因为每次使用的都是相同的随机数数列。

2.Random()

(1)生成一个01的小数。

(2)不可再现,即使是相同的代码,由于参数赋值不可能再相同,很难再现当初程序所使用的随机数到底是多少。

(3)

三、扩展随机函数

1.生成整数

(1)Randint(a,b)随机生成一个ab之间的整数

(2)Randrange(m,n[,k])随机生成一个mn之间以k为步长的整数

(3)Getrandbits(k)生成一个k比特长的随机整数

2.生成小数

(1)Uniform(a,b)生成ab之间的随机小数

3.序列

(1)Choice(seq)从序列seq中随机选择一个元素

(2)Shuffle(seq)将序列seq中元素随机排序

四、实例—圆周率的计算—

1.蒙特卡洛方法

2.import random as r

3.import time as t

4.start=t.perf_counter()

5.square=5000*5000

6.hits=0

7.for i in range(square):

8.    a,b=r.random(),r.random()

9.    if pow(pow(a,2)+pow(b,2),0.5)<=1:

10.        hits+=1

11.print('圆周率是:{}'.format(4*hits/square))

12.print('程序运行时间是:{:.7f}'.format(t.perf_counter()-start))

五、数学思维与计算思维

1.数学思维:找到公式,用公式求解,此时计算机就是高级一点的计算器,不用什么编程

2.计算思维:抽象,用计算机自动化求解。

3.谁更准确?不好说。

4.   四色定理(世界近代三大数学难题之一),又称四色猜想、四色问题,是世界三大数学猜想之一。四色定理的本质正是二维平面的固有属性,即平面内不可出现交叉而没有公共点的两条直线。很多人证明了二维平面内无法构造五个或五个以上两两相连区域,但却没有将其上升到逻辑关系和二维固有属性的层面,以致出现了很多伪反例。不过这些恰恰是对图论严密性的考证和发展推动。计算机证明虽然做了百亿次判断,终究只是在庞大的数量优势上取得成功,这并不符合数学严密的逻辑体系,至今仍有无数数学爱好者投身其中研究。

六、程序性能与运行时间

1.程序运行时间多数是花费在循环语句上的,关注循环结构

2.使用time库获取程序运行时间

3.将程序分段,用time库计时,测试程序的性能

 

 

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!