当前课程知识点:计算思维与人工智能基础 > 第三部分:python基础 > 第八章:python生态库 > 8.4标准库-Random库
下面我们给大家介绍random标准库
random库包含两类函数
常用的共有八个
基本随机函数,seed种子函数和random函数
还有扩展随机函数,randint,getrandbits
uniform,randrange,choice,shuffle
那我们在Jupyter下看一下这几个函数具体的使用
我们在使用random库的时候,首先也需要导入
那使用了这个随机种子以后我们可以看到
他得到的这个随机数是不变的
如果我们把这个再执行一下可以看的到我们得到的还是他
如果我们把这个random seed注释掉以后
让我们来看看他的得到的随机数是
每次都是不一样的
你可以看到那么这个seed函数就是这样使用的
再看一下我们的扩展的随机函数
randint那么这个是在我们指定的范围内产生一个随机数
每次产生不一样的
而random randrange是指定的一个范围内
可以指定步长
随机产生一个步长十到一百步长是十
那么每次的随机数就是十的倍数
可以看到这个随机数
还有个getrandbits
生成一个指定比特长度的一个随机整数
我们可以看到这个是四,四的话我们最大的是16
那么0到15可以产生
我们再产生一个,他最小的是0,我们可以看14
最大是15
那么uniform是我们指定范围内产生一个随机的小数或者说浮点数
我们可以看到他是大于十小于一百的浮点数
random.choice就是在我们这个序列里面选一个元素
它可以选次选不一样的
shuffle是我们给了这样一个序列
不过shuffle来进行重排,每次随机他的顺序
这就是我们用常用的这几个随机的扩展函数
我们来看一个例子
用随机函数来实现圆周率的计算
把下面这个方法称作蒙特卡洛法
怎么样去做呢?
我们现在有一个正方形
内部有一个镶嵌的圆
那我们来看一下圆和正方形的面积的比较
可以看出正方形是r
圆面积兀,r
他的比率呢就是四分之兀
那么这个是我们这样的一个例子来看
我们如何去设计
我们通过随机函数来去实现它呢?
那我们可以看圆和正方形的面积的比值是4分之兀
那么这个也就说我们把它分成这样从中心点开始分成这样子的
这一块是四分之一的面积
那么圆也是四分之一
他的比是不变
那我们在这个地方可以产生一些随机数
那么产生随机数这一块的所有的随机数
在圆里的随机数呢他的比也应该4分之兀这样的一个比例
这时候我们这个比例乘以四就是兀的值
这个就是用蒙特卡洛方法来实现求圆周率
具体的代码是分三步
第一步我们就要先产生N个点
然后第二部是要求每个点到圆心的距离
那么就求她的半径
半径如果是小于等于一的话
说明是在圆里的点
我们最后计算出它的比率乘以四就是我们派的值
如果写代码可以看的到我们首先要把random导进来
并且我们导进来一个计时的time库里面的perf_counter方法
下面我们来设计下我们要做的DARTS
我们可以看到他是一千剩一万个这样的点
这个hits是我们记录在圆内的点
start是我们用来记录我们的开始的时间
perf获得开始的时间
他们通过for循环
从一开始到DARTS这样这么多个点
每次可以随机到XY
我们这个是求每一个点到原点的距离也就是半径
如果这个值小于一的话,我们就可以给他进行计数
那么多次循环呢
这个就到DARTS这么多个点出来以后呢
我们可以看到hits和DARTS比他应该满足
4分之兀
那我们要求兀的话4乘以我们这个比率就得到兀
我们实际在看通过Jupyter看一下
我们这个代码求出来的圆周率会是多少
这是我们在Jupyter下刚才讲的这段代码
我们来看一下它的执行过程
我们可以把这个点数可以稍微放小一点,一千剩一千个点
看他用了几秒钟能计算出来
我们运行一下可以看的到开始计算
用了两秒多钟
那么3.141592
我们把这个点数可以增加到两千个点
那我们在运算一下可以看他用到的时间
要比刚才更长一点
3.7秒
3.140956
他比刚才那个更准确点1415926
它的差值会少
就更准确一些
那这就是我们通过随机函数蒙特卡罗的这个方法来计算圆周率
我们关于random函数就给大家介绍到这
-章测试
-章测试
-第一章:python简介
--章测试
-第二章:编码规范
--2.2常量和变量
--章测试
-第三章:数据类型
--章测试
-第四章:基本运算
--4.2比较运算符
--4.3逻辑运算符
--4.4位运算符
--章测试
-第五章:程序控制结构
--5.1顺序结构
--5.2条件结构
--5.3循环结构
--5.4跳转结构
--5.5异常处理
--章测试
-第六章:函数、模块与面向对象
--6.2面向对象
--6.4模块与包
--章测试
-第七章:文件操作
--7.2文件的写入
--章测试
-第八章:python生态库
--章测试
-第九章:TensorFlow基础
--章测试
-第十章:实例分析与实践
--章测试
-第十一章:人工智能在自然语言中的应用
--章测试