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脚本实现分析dns日志并对受访域名排行
Sep 18 Python
在Django框架中编写Context处理器的方法
Jul 20 Python
十条建议帮你提高Python编程效率
Feb 16 Python
python常用知识梳理(必看篇)
Mar 23 Python
Django实现支付宝付款和微信支付的示例代码
Jul 25 Python
Python 字符串换行的多种方式
Sep 06 Python
在python中安装basemap的教程
Sep 20 Python
利用Python正则表达式过滤敏感词的方法
Jan 21 Python
如何在Anaconda中打开python自带idle
Sep 21 Python
Pytorch 图像变换函数集合小结
Feb 01 Python
python脚本使用阿里云slb对恶意攻击进行封堵的实现
Feb 04 Python
详解Golang如何实现支持随机删除元素的堆
Sep 23 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
VFP与其他应用程序的集成
2006/10/09 PHP
PHP循环获取GET和POST值的代码
2008/04/09 PHP
一个PHP分页类的代码
2011/05/18 PHP
PHP可变函数的使用详解
2013/06/14 PHP
IIS6.0 开启Gzip方法及PHP Gzip函数分享
2014/06/08 PHP
CI(CodeIgniter)框架介绍
2014/06/09 PHP
两个php日期控制类实例
2014/12/09 PHP
PHP实现微信提现功能(微信商城)
2019/11/21 PHP
JS实现商品倒计时实现代码
2013/05/03 Javascript
JS中attr和prop属性的区别以及优先选择示例介绍
2014/06/30 Javascript
jQuery Easyui 下拉树组件combotree
2016/12/16 Javascript
详解Vuejs2.0 如何利用proxyTable实现跨域请求
2017/08/03 Javascript
Node.js创建Web、TCP服务器
2017/12/05 Javascript
原生js+cookie实现购物车功能的方法分析
2017/12/21 Javascript
Vue完整项目构建(进阶篇)
2018/02/10 Javascript
用vue快速开发app的脚手架工具
2018/06/11 Javascript
详解Vue.js在页面加载时执行某个方法
2018/11/20 Javascript
React性能优化系列之减少props改变的实现方法
2019/01/17 Javascript
js中对象与对象创建方法的各种方法
2019/02/27 Javascript
Vue 自定义指令功能完整实例
2019/09/17 Javascript
JS+HTML实现自定义上传图片按钮并显示图片功能的方法分析
2020/02/12 Javascript
python3用PIL把图片转换为RGB图片的实例
2019/07/04 Python
python编写猜数字小游戏
2019/10/06 Python
Django实现图片上传功能步骤解析
2020/04/22 Python
Python爬取12306车次信息代码详解
2020/08/12 Python
CSS3教程:background-clip和background-origin
2008/10/17 HTML / CSS
HTML5之SVG 2D入门8—文档结构及相关元素总结
2013/01/30 HTML / CSS
H5页面适配iPhoneX(就是那么简单)
2019/12/02 HTML / CSS
阿迪达斯加拿大官网:Adidas加拿大
2016/08/25 全球购物
Sunglasses Shop德国站:欧洲排名第一的太阳镜网站
2017/08/01 全球购物
澳大利亚最好的厨具店:Kitchen Warehouse
2018/03/13 全球购物
党员个人整改措施
2014/10/24 职场文书
干部作风建设工作总结
2014/10/29 职场文书
python如何利用cv2模块读取显示保存图片
2021/06/04 Python
MySQL中datetime时间字段的四舍五入操作
2021/10/05 MySQL
python中取整数的几种方法
2021/11/07 Python