这是在本系列课中学的第三个标准库
random库是使用随机数的python标准库
库引用 :扩展python程序功能的方式
关于库引用其实在第一个库时
老师就讲了但我之前没有整理
这里发现用到的次数可能要多起来了
在这里补充上!!!
库引用 :扩展python程序功能的方式
(1)使用 import 保留字完成,采用<a>.<b>()编码风格 |
import <库名> |
<库名>.<函数名>(<函数参数>) |
(2)使用 from和import 保留字共同完成 |
from<库名>import<函数名> #感觉很常用 |
from<库名>import* |
<函数名>(<函数参数>) |
(3)使用 import和as 保留字共同完成 #这种方法最好 |
import<库名>as<库别名> |
<库别名>.<函数名>(<函数参数>) |
random库有两类函数 (常用共8个)
基本随机函数 | |
函数 | 描述 |
seed(a=None) | 初始化给定的随机数种子,默认为当前系统时间 |
>>>random.seed(10) | |
random() | 生成一个[0.0~1.0)之间的随机小数 |
>>>random.random() |
import random
random.seed(10) #种子只需要给一次,随机数会随着每次调用产生不同的随机数
random.random()
0.5714025946899135
random.random()
0.4288890546751146
random.seed(10) #如果重新调用seed而且设置的数值相同,那得到的随机数也相同
random.random()
0.5714025946899135
扩展随机函数 | |
函数 | 描述 |
randint(a,b) | 生成一个[a,b]之间的整数 |
random.randint(10,100) | |
randrange(m,n[,k]) | 生成一个[m,n)之间以k为步长的随机整数 |
random.randrange(10,100,10) | |
getrandbits(k) | 生成一个k比特的随机整数 |
random.getrandbits(16) | |
uniform(a,b) | 生成一个[a,b]之间的随机小数 |
random.uniform(10,100) | |
choice(seq) | 从序列seq中随机选择一个元素 |
random.choice([1,2,3,4,5,6,7,8,9]) | |
shuffle(seq) | 将序列seq中元素随机排列,返回打乱后的序列 |
s=[1,2,3,4,5]; random.shuffle(s) ;print(s) |
import random
random.randint(10,100)
46
random.randrange(10,100,10) #从10开始不到100之间的整数中随机选取一个,以10为步长的整数
90
random.getrandbits (16)
5535
random.uniform (10,100) #python的浮点数取值范围是小数点后的16位(这个是15位)
30.392054627572666
random.choice([1,2,3,4,5,6])
5
import random
s=[1,2,3,4,5,6,7]
random.shuffle(s)
print(s)
[7, 3, 1, 2, 6, 5, 4]
实例6圆周率的计算
这个蒙特卡罗方法(撒点法)
from random import random
from time import perf_counter #对程序运行计时
ALL=1000*1000 #在当前区域内抛洒点的总数量
hits=0.0 #目前在圆的内部的点的数量
start=perf_counter() #当前的系统时间的一个值,启动计时
for i in range(1,ALL+1): #遍历循环,对每一个点做一个循环体的运算
x,y=random(),random() #用x,y两个变量生成两个随机数的坐标值,这个随机的坐标就是随机的抛点
dist=pow(x**2+y**2,0.5) #用点到圆心的距离判断点是否在圆内
if dist<=1.0: #如果点落在了圆内
hits=hits+1 #目前圆内的点数加一
pi=4*(hits/ALL)
print("圆周率值是:{}".format (pi))
print("运行时间是:{:.5f}s".format(perf_counter()-start))
蒙特卡罗方法真的好用
比计算公式好理解多了
这里用的是单位正方形和单位圆
很好理解!!!