random库的使用(学习笔记)

**random库的使用(学习笔记)

random的初步了解

#random库是使用随机数的Python标准库
#随机数是随机产生的数据(类似于抛硬币)
#计算机生成的随机数是复杂环境下产生的确定值(伪随机数)
#伪随机数:采用梅森旋转算法生成的(伪)随机序列中元素
#random库主要用于生成随机数
#使用random库: import random
#random库包括两类函数,常用共8个
#基本随机函数:seed(),random()
#扩展随机数函数:randint(),getrandbits(),uniform(),randrange(),shuffle()

基本随机数函数

#随机数种子
#随机数种子——梅森旋转算法——随机序列
#函数
#seed(a=None) 初始化给定的随机数种子,默认为当前系统时间
#random.seed(10) 产生种子10对应的序列

#random() 生成一个[0.0,1.0]之间的随机小数{只能产生0-1之间的小数}
#random.random()
#eg
import random
random.seed(10)
random.random()

扩展随机数函数:randint(),getrandbits(),uniform(),randrange(),shuffle()

#randint(a,b) 生成一个[a,b]之间的整数
#random.randint(10,100)
#randrange(m,n[,k]) 生成一个[m,n]之间以k为步长的随机整数
#random.randrange(10,100,10)
#getrandbits(k) 生成一个k比特长的随机整数
#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,6,7,8,9];
#random.shuffle(s);print(s)
#[3,5,8,9,6,1,2,7,4]

实例 计算圆周率

#蒙特卡洛方法:区域面积撒点,点数庞大且随机
#点在正方形和圆形之中的数量的比值,就可以计算出圆的面积(工程方法)
#圆周率的近似计算公式
pi = 0
N = 100 #(循环次数)
for k in range(N) : #圆周率计算公式法
pi += 1/pow(16,k)(
4/(8
k+1)-2/(8k+4)-
1/(8
k+5)-1/(8*k+6))
print(“圆周率值是:{}”.format(pi))

#蒙特卡罗方法
#CalPiV2.py
from random import random #调取后台库函数时需要确保后台没有同名的PY文件,否则会调取失败
#出现错误ImportError: cannot import name Random
from time import perf_counter #能够对程序进行计时的函数
DARTS = 10001000#(抛撒点的总数量)
hits = 0.0#(目前在圆的内部点的数量)
start = perf_counter()#(当前系统时间的值)
for i in range(1,DARTS+1):#(循环撒点的过程视为遍历循环的过程)
x,y = random(),random()#生成两个随机量的坐标值(0.0-1.0)
dist = pow(x2+y2,0.5)#通过判断点距离圆心的距离来确定是否在园内
if dist <= 1.0:
hits = hits + 1#表示通过撒点之后再圆的内壁撒点的数量
pi = 4
(hits/DARTS)#圆内部的撒点数量比上总的数量就是pi/4
print(“圆周率值是:{}”.format(pi))
print(“运行时间是:{:.5f}s”.format(perf_counter()-start))
#举一反三
#理解思维方法
#数学思维:找到公式,利用公式求解
#计算思维:抽象一种过程,用计算机自动化求解
#-使用time库计时方法获得程序运行时间
#-改变撒点的数量,理解程序运行时间的分布
#计算机运行时80%的时间消耗在10%的循环代码上,优化计算机的运行性能,使用time库对运行时间进行测量,程序性能分析方法
#计算问题的扩展:不求解圆周率,而是某个特定图形的面积

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值