Python标准库之随机数 (math包、random包)介绍


Posted in Python onNovember 25, 2014

我们已经在Python运算中看到Python最基本的数学运算功能。此外,math包补充了更多的函数。当然,如果想要更加高级的数学功能,可以考虑选择标准库之外的numpy和scipy项目,它们不但支持数组和矩阵运算,还有丰富的数学和物理方程可供使用。

此外,random包可以用来生成随机数。随机数不仅可以用于数学用途,还经常被嵌入到算法中,用以提高算法效率,并提高程序的安全性。

math包

math包主要处理数学相关的运算。math包定义了两个常数:

math.e   # 自然常数e

math.pi  # 圆周率pi

此外,math包还有各种运算函数 (下面函数的功能可以参考数学手册):

math.ceil(x)       # 对x向上取整,比如x=1.2,返回2

math.floor(x)      # 对x向下取整,比如x=1.2,返回1

math.pow(x,y)      # 指数运算,得到x的y次方

math.log(x)        # 对数,默认基底为e。可以使用base参数,来改变对数的基地。比如math.log(100,base=10)

math.sqrt(x)       # 平方根

三角函数: math.sin(x), math.cos(x), math.tan(x), math.asin(x), math.acos(x), math.atan(x)

这些函数都接收一个弧度(radian)为单位的x作为参数。

角度和弧度互换: math.degrees(x), math.radians(x)

双曲函数: math.sinh(x), math.cosh(x), math.tanh(x), math.asinh(x), math.acosh(x), math.atanh(x)

特殊函数: math.erf(x), math.gamma(x)

random包

如果你已经了解伪随机数(psudo-random number)的原理,那么你可以使用如下:

random.seed(x)

来改变随机数生成器的种子seed。如果你不了解其原理,你不必特别去设定seed,Python会帮你选择seed。

1) 随机挑选和排序

random.choice(seq)   # 从序列的元素中随机挑选一个元素,比如random.choice(range(10)),从0到9中随机挑选一个整数。
random.sample(seq,k) # 从序列中随机挑选k个元素
random.shuffle(seq)  # 将序列的所有元素随机排序

2)随机生成实数

下面生成的实数符合均匀分布(uniform distribution),意味着某个范围内的每个数字出现的概率相等:

random.random()          # 随机生成下一个实数,它在[0,1)范围内。

random.uniform(a,b)      # 随机生成下一个实数,它在[a,b]范围内。

下面生成的实数符合其它的分布 (你可以参考一些统计方面的书籍来了解这些分布):

random.gauss(mu,sigma)    # 随机生成符合高斯分布的随机数,mu,sigma为高斯分布的两个参数。 

random.expovariate(lambd) # 随机生成符合指数分布的随机数,lambd为指数分布的参数。

此外还有对数分布,正态分布,Pareto分布,Weibull分布,可参考下面链接:

http://docs.python.org/library/random.html

假设我们有一群人参加舞蹈比赛,为了公平起见,我们要随机排列他们的出场顺序。我们下面利用random包实现:

import random

all_people = ['Tom', 'Vivian', 'Paul', 'Liya', 'Manu', 'Daniel', 'Shawn']

random.shuffle(all_people)

for i,name in enumerate(all_people):

    print(i,':'+name)

练习

设计下面两种彩票号码生成器:

1. 从1到22中随机抽取5个整数 (这5个数字不重复)

2. 随机产生一个8位数字,每位数字都可以是1到6中的任意一个整数。

总结

math.floor(), math.sqrt(), math.sin(), math.degrees()

random.random(), random.choice(), random.shuffle()

Python 相关文章推荐
Python实现子类调用父类的方法
Nov 10 Python
python中getaddrinfo()基本用法实例分析
Jun 28 Python
简介二分查找算法与相关的Python实现示例
Aug 26 Python
Python中的数据对象持久化存储模块pickle的使用示例
Mar 03 Python
快速入手Python字符编码
Aug 03 Python
基于Django的python验证码(实例讲解)
Oct 23 Python
python实现Floyd算法
Jan 03 Python
Python常见的pandas用法demo示例
Mar 16 Python
用Python写一个自动木马程序
Sep 17 Python
打印tensorflow恢复模型中所有变量与操作节点方式
May 26 Python
python爬虫beautifulsoup解析html方法
Dec 07 Python
Flask处理Web表单的实现方法
Jan 31 Python
Python标准库之循环器(itertools)介绍
Nov 25 #Python
Python标准库之sqlite3使用实例
Nov 25 #Python
Python标准库内置函数complex介绍
Nov 25 #Python
Python XML RPC服务器端和客户端实例
Nov 22 #Python
Python实现读取目录所有文件的文件名并保存到txt文件代码
Nov 22 #Python
python进程类subprocess的一些操作方法例子
Nov 22 #Python
Python读取环境变量的方法和自定义类分享
Nov 22 #Python
You might like
《Pokemon Sword·Shield》系列WEB动画《薄明之翼》第2话声优阵容公开!
2020/03/06 日漫
php中防止恶意刷新页面的代码小结
2012/10/31 PHP
php结合js实现点击超链接执行删除确认操作
2014/10/31 PHP
php使用GD实现颜色渐变实例
2015/06/02 PHP
phpstudy隐藏index.php的方法
2020/09/21 PHP
jquery插件之easing使用
2010/08/19 Javascript
使用JavaScript实现网页版Pongo设计思路及源代码分享
2014/06/16 Javascript
javascript制作坦克大战全纪录(1)
2014/11/27 Javascript
JS实现弹出浮动窗口(支持鼠标拖动和关闭)实例详解
2015/08/06 Javascript
详解JavaScript的表达式与运算符
2015/11/30 Javascript
给angular加上动画效遇到的问题总结
2016/02/17 Javascript
Node.js的基本知识简单汇总
2016/09/19 Javascript
JS实现手写parseInt的方法示例
2017/09/24 Javascript
vue-lazyload图片延迟加载插件的实例讲解
2018/02/09 Javascript
Vuejs通过拖动改变元素宽度实现自适应
2020/09/02 Javascript
vue-quill-editor插入图片路径太长问题解决方法
2021/01/08 Vue.js
Python网页解析利器BeautifulSoup安装使用介绍
2015/03/17 Python
Python实现简单状态框架的方法
2015/03/19 Python
Python正则替换字符串函数re.sub用法示例
2017/01/19 Python
简单的python后台管理程序
2017/04/13 Python
python操作excel的包(openpyxl、xlsxwriter)
2018/06/11 Python
详解Python中的分组函数groupby和itertools)
2018/07/11 Python
python  Django中的apps.py的目的是什么
2018/10/15 Python
Python 处理图片像素点的实例
2019/01/08 Python
python创建n行m列数组示例
2019/12/02 Python
Python爬虫之Selenium下拉框处理的实现
2020/12/04 Python
使用CSS3配合IE滤镜实现渐变和投影的效果
2015/09/06 HTML / CSS
俄罗斯品牌服装在线商店:VIPAVENUE
2020/08/10 全球购物
空指针到底是什么
2012/08/07 面试题
销售顾问岗位职责
2014/02/25 职场文书
教研活动总结
2014/04/28 职场文书
优秀教师个人材料
2014/12/15 职场文书
经典导游欢迎词
2015/01/26 职场文书
小王子读书笔记
2015/06/29 职场文书
小型企业的绩效考核制度模板
2019/11/21 职场文书
Python实现数据的序列化操作详解
2022/07/07 Python