MOOC Python语言程序设计(第4周)3 random库

时间:2022-12-30 23:35:59

random库

    是使用随机数的python标准库

    计算机不能生成真正的随机数

    伪随机数:采用梅森旋转算法生成的(伪)随机序列中元素

    基本随机数函数

        MOOC Python语言程序设计(第4周)3 random库

        随机数种子确定了随机数的产生,种子只需要给一次,随机数会随着每次调用产生随机数,

                                                           若不给种子,默认为当前执行第一次random()函数对应的系统时间;

                                                           只要种子相同,产生的随机数是相同的,可以复现过程

            MOOC Python语言程序设计(第4周)3 random库

            MOOC Python语言程序设计(第4周)3 random库

      扩展随机数函数

            MOOC Python语言程序设计(第4周)3 random库

            MOOC Python语言程序设计(第4周)3 random库

            python中浮点数是16位,所以随机小数也是16位

            MOOC Python语言程序设计(第4周)3 random库

            python中如果多行代码写在一行用;分隔


圆周率计算

           1.公式计算

       MOOC Python语言程序设计(第4周)3 random库

#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. 蒙特卡洛方法

         MOOC Python语言程序设计(第4周)3 random库

        

#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 库的计时方法获得程序运行时间,程序性能分析

    改变撒点数量,理解程序运行时间的分布           

MOOC Python语言程序设计(第4周)3 random库