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 字符串定义
Sep 25 Python
python中定义结构体的方法
Mar 04 Python
Python 创建子进程模块subprocess详解
Apr 08 Python
启动targetcli时遇到错误解决办法
Oct 26 Python
Python实现多级目录压缩与解压文件的方法
Sep 01 Python
Python之数据序列化(json、pickle、shelve)详解
Aug 30 Python
DJango的创建和使用详解(默认数据库sqlite3)
Nov 18 Python
Python统计文本词汇出现次数的实例代码
Feb 27 Python
python+selenium+chromedriver实现爬虫示例代码
Apr 10 Python
python中setuptools的作用是什么
Jun 19 Python
Python中的特殊方法以及应用详解
Sep 20 Python
Python数据分析入门之数据读取与存储
May 13 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
域名和cookie问题(域名后缀)
2012/10/10 PHP
PHP登录环节防止sql注入的方法浅析
2014/06/30 PHP
php之Smarty模板使用方法示例详解
2014/07/08 PHP
WordPress用户登录框密码的隐藏与部分显示技巧
2015/12/31 PHP
PHP实现的通过参数生成MYSQL语句类完整实例
2016/04/11 PHP
JavaScript语句可以不以;结尾的烦恼
2007/03/08 Javascript
javascript HTMLEncode HTMLDecode的完整实例(兼容ie和火狐)
2009/06/02 Javascript
jQuery判断checkbox是否选中的3种方法
2014/08/12 Javascript
IE下支持文本框和密码框placeholder效果的JQuery插件分享
2015/01/31 Javascript
jQuery的事件委托实例分析
2015/07/15 Javascript
jQuery实现ctrl+enter(回车)提交表单
2015/10/19 Javascript
js和jquery实现监听键盘事件示例代码
2020/06/24 Javascript
浅析BootStrap中Modal(模态框)使用心得
2016/12/24 Javascript
用javascript获取任意颜色的更亮或更暗颜色值示例代码
2017/07/21 Javascript
浅谈Angular文字折叠展开组件的原理分析
2017/11/24 Javascript
在Vue项目中引入腾讯验证码服务的教程
2018/04/03 Javascript
微信小程序实现折叠与展开文章功能
2018/06/12 Javascript
小程序实现订单倒计时功能
2019/04/23 Javascript
关于ckeditor在bootstrap中modal中弹框无法输入的解决方法
2019/09/11 Javascript
基于JS实现table导出Excel并保留样式
2020/05/19 Javascript
[02:27]2014DOTA2国际邀请赛 VG赛后采访:更大的挑战在等着我们
2014/07/13 DOTA
Python实现的数据结构与算法之快速排序详解
2015/04/22 Python
基于python的Tkinter编写登陆注册界面
2017/06/30 Python
hmac模块生成加入了密钥的消息摘要详解
2018/01/11 Python
Python 绘图库 Matplotlib 入门教程
2018/04/19 Python
如何在Cloud Studio上执行Python代码?
2019/08/09 Python
解决django中form表单设置action后无法回到原页面的问题
2020/03/13 Python
使用Django实现把两个模型类的数据聚合在一起
2020/03/28 Python
中国海淘族值得信赖的海淘返利网站:55海淘
2017/01/16 全球购物
个人自我鉴定怎么写
2013/10/28 职场文书
《盘古开天地》教学反思
2014/02/28 职场文书
员工工作能力评语
2014/12/31 职场文书
会计人员岗位职责
2015/02/03 职场文书
《绝招》教学反思
2016/02/20 职场文书
pytorch 中autograd.grad()函数的用法说明
2021/05/12 Python
mysqldump进行数据备份详解
2022/07/15 MySQL