random库
是使用随机数的python标准库
计算机不能生成真正的随机数
伪随机数:采用梅森旋转算法生成的(伪)随机序列中元素
基本随机数函数
随机数种子确定了随机数的产生,种子只需要给一次,随机数会随着每次调用产生随机数,
若不给种子,默认为当前执行第一次random()函数对应的系统时间;
只要种子相同,产生的随机数是相同的,可以复现过程
扩展随机数函数
python中浮点数是16位,所以随机小数也是16位
python中如果多行代码写在一行用;分隔
圆周率计算
1.公式计算
#CalPiv1 pi = 0 N = 100 for k in range(N): pi += 1/pow(16,k)*(\ 4/(8*k+1)-2/(8*k+4)-\ 1/(8*k+5)-1/(8*k+6)) print("圆周率的值是:{}".format(pi))
2. 蒙特卡洛方法
#CalPiv2 from random import random from time import perf_counter DARTS = 1000*1000 #总撒点数 hits = 0.0 #圆内点数 start = perf_counter() for i in range(1,DARTS+1): x,y = random(),random() #两个随机数坐标值 dist = pow(x**2+y**2,0.5) #计算两个点到圆心的距离 if dist <= 1.0: hits += 1 pi = 4*(hits/DARTS) print("圆周率的值是:{}".format(pi)) print("运行时间是:{:.5f}s".format(perf_counter()-start))
数学思维:找到公式,利用公式求解
计算思维:抽象一种过程,用计算机自动化求解
程序运行时间分析:
使用time 库的计时方法获得程序运行时间,程序性能分析
改变撒点数量,理解程序运行时间的分布