random库相关知识

random库是使用随机数的Python 标准库
伪随机数:采用梅森旋转算法生成的(伪)随机序列中元素
random库主要用生成伪随机数
random库包含两类函数,常用的包含8个
基本随机函数:seed(),random()
拓展随机函数:randint(),getrandbits(),uniform(),randrange(),choice(),shuffle()

在这里插入图片描述
1.种子只给一次,随着random的调用会产生随机数
2.不给种子,默认的种子是当前第一次调用random函数的系统时间
给出种子的意义,在于可以复现程序的运行过程,种子确定随机数就是确定的
在这里插入图片描述
拓展随机数函数:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
圆周率计算问题分析:蒙特卡罗方法
圆周率的近似计算公式
为了使代码形式易看,加上 \ 可以将原本一行的代码分成多行。

#yuanzhoulvwn.py
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))

圆周率计算:假设圆的半径为1,圆心在(0,0)

#yuanzhoulvwn.py
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()#利用random生成随机坐标(x,y)
    dist=pow(x**2+y**2,0.5)
    if dist<=1.0:
        hits=hits+1
pi=4*(hits/Darts)
print("圆周率值是:{}".format(pi))
print("运行时间是:{:.5f}s".format(perf_counter()-start))

举一反三:程序运行时间大部分消耗在循环上
在这里插入图片描述

例题:用户登录的三次机会
在这里插入图片描述
代码1:

for i in range(0,3,1):
    name=input()
    password=input()
    if name=="Kate"and password=="666666":
        print("登录成功!")
        break
    else:
        while i==2:
            print("3次用户名或者密码均有误!退出程序。")
            break

代码2:

count=0
while count <3:
    name=input()
    password=input()
    if name=="Kate"and password=="666666":
        print("登录成功!")
        break
    else:
        count+=1
        if count==3:
            print("3次用户名或者密码均有误!退出程序。")

三位水仙花数:

t=""
for i in range (100,1000):
    s=str(i)
    if i==pow(eval(s[0]),3)+pow(eval(s[1]),3)+pow(eval(s[2]),3):
        t+="{},".format(i)
print(t[:-1])


四位玫瑰数:与三位水仙花数大同小异

for i in range(1000,10000):
    t=str(i)
    if i==pow(eval(t[0]),4)+pow(eval(t[1]),4)+pow(eval(t[2]),4)+pow(eval(t[3]),4):
        print(i)

100之内素数之和:定义函数的使用,首先判断是否是素数

def is_sushu(n):
    for i in range(2,n):
        if n%i==0:
            return False
    return True
sum=0
for i in range(2,100):
    if is_sushu(i):
        sum+=i
print(sum)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值