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简单实现计算过期时间的方法
Jun 09 Python
python实现中文分词FMM算法实例
Jul 10 Python
python多线程方式执行多个bat代码
Jun 07 Python
火车票抢票python代码公开揭秘!
Mar 08 Python
python用fsolve、leastsq对非线性方程组求解
Dec 15 Python
pyqt5实现登录界面的模板
May 30 Python
python字符串分割及字符串的一些常规方法
Jul 24 Python
python机器学习库xgboost的使用
Jan 20 Python
使用Keras中的ImageDataGenerator进行批次读图方式
Jun 17 Python
基于Python和C++实现删除链表的节点
Jul 06 Python
Python制作表白爱心合集
Jan 22 Python
如何Python使用re模块实现okenizer
Apr 30 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
php分页函数示例代码分享
2014/02/24 PHP
CodeIgniter与PHP5.6的兼容问题
2015/07/16 PHP
[转]JS宝典学习笔记
2007/02/07 Javascript
js loading加载效果实现代码
2009/11/24 Javascript
JS在IE和FireFox之间常用函数的区别小结
2010/03/12 Javascript
关于javascript event flow 的一个bug详解
2013/09/17 Javascript
js带按钮的提示框可供选择示例代码
2013/09/17 Javascript
jQuery取得select选择的文本与值的示例
2013/12/09 Javascript
微信内置浏览器私有接口WeixinJSBridge介绍
2015/05/25 Javascript
AngularJS监听路由的变化示例代码
2016/09/23 Javascript
jquery获取点击控件的绝对位置简单实例
2016/10/13 Javascript
微信小程序开发之实现选项卡(窗口顶部TabBar)页面切换
2016/11/25 Javascript
EasyUI的TreeGrid的过滤功能的解决思路
2017/08/08 Javascript
详解AngularJS1.x学习directive 中‘& ’‘=’ ‘@’符号的区别使用
2017/08/23 Javascript
Vue.js 2.5新特性介绍(推荐)
2017/10/24 Javascript
小程序自定义弹框效果
2020/11/16 Javascript
python使用PyGame播放Midi和Mp3文件的方法
2015/04/24 Python
python基于右递归解决八皇后问题的方法
2015/05/25 Python
Python常用时间操作总结【取得当前时间、时间函数、应用等】
2017/05/11 Python
python将处理好的图像保存到指定目录下的方法
2019/01/10 Python
python中p-value的实现方式
2019/12/16 Python
如何在mac环境中用python处理protobuf
2019/12/25 Python
Python中remove漏删和索引越界问题的解决
2020/03/18 Python
Spring Boot中使用IntelliJ IDEA插件EasyCode一键生成代码详细方法
2020/03/20 Python
Python基于百度AI实现OCR文字识别
2020/04/02 Python
安装多个版本的TensorFlow的方法步骤
2020/04/21 Python
python用什么编辑器进行项目开发
2020/06/17 Python
Python eval函数介绍及用法
2020/11/09 Python
天美时手表加拿大官网:Timex加拿大
2016/09/01 全球购物
爱尔兰橄榄球店:Irish Rugby Store
2019/12/05 全球购物
总裁办公室主任职责
2014/01/02 职场文书
违反学校规定检讨书
2014/01/18 职场文书
社区党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
群众路线查摆问题整改措施思想汇报
2014/10/10 职场文书
委托书英文
2015/01/28 职场文书
Mysql将字符串按照指定字符分割的正确方法
2022/05/30 MySQL