random库的使用,实例6圆周率的计算

 这是在本系列课中学的第三个标准库

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))

蒙特卡罗方法真的好用

比计算公式好理解多了

这里用的是单位正方形和单位圆

很好理解!!!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大数据的小数据孩儿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值