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实现数据图表
Jul 29 Python
pandas实现选取特定索引的行
Apr 20 Python
python语音识别实践之百度语音API
Aug 30 Python
详解python Todo清单实战
Nov 01 Python
程序员写Python时的5个坏习惯,你有几条?
Nov 26 Python
python的依赖管理的实现
May 14 Python
解决.ui文件生成的.py文件运行不出现界面的方法
Jun 19 Python
python3模拟实现xshell远程执行liunx命令的方法
Jul 12 Python
python单例模式原理与创建方法实例分析
Oct 26 Python
python使用turtle库绘制奥运五环
Feb 24 Python
Python使用文件操作实现一个XX信息管理系统的示例
Jul 02 Python
Python爬取英雄联盟MSI直播间弹幕并生成词云图
Jun 01 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
图书管理程序(一)
2006/10/09 PHP
php 静态页面中显示动态内容
2009/08/14 PHP
PHP+MySQL实现在线测试答题实例
2020/01/02 PHP
Js 本页面传值实现代码
2009/05/17 Javascript
如何用JavaScript动态呼叫函数(两种方式)
2013/05/03 Javascript
使用JS获取当前地理位置方法汇总
2014/12/18 Javascript
CSS+JS实现点击文字弹出定时自动关闭DIV层菜单的方法
2015/05/12 Javascript
详谈javascript中的cookie
2015/06/03 Javascript
纯javascript实现四方向文本无缝滚动效果
2015/06/16 Javascript
javascript基于prototype实现类似OOP继承的方法
2015/12/16 Javascript
Angular.js中用ng-repeat-start实现自定义显示
2016/10/18 Javascript
JS给Array添加是否包含字符串的简单方法
2016/10/29 Javascript
node中的session的具体使用
2018/09/14 Javascript
使用相同的Apache实例来运行Django和Media文件
2015/07/22 Python
浅析Python3爬虫登录模拟
2018/02/07 Python
python数字图像处理之骨架提取与分水岭算法
2018/04/27 Python
python基于http下载视频或音频
2018/06/20 Python
Python设计模式之迭代器模式原理与用法实例分析
2019/01/10 Python
详解python和matlab的优势与区别
2019/06/28 Python
Python之修改图片像素值的方法
2019/07/03 Python
解决Python计算矩阵乘向量,矩阵乘实数的一些小错误
2019/08/26 Python
感知器基础原理及python实现过程详解
2019/09/30 Python
pandas数据处理之绘图的实现
2020/06/15 Python
CSS改变网页中鼠标选中文字背景颜色例子
2014/04/23 HTML / CSS
Mavi牛仔裤美国官网:土耳其著名牛仔品牌
2016/09/24 全球购物
美国Lolё官网:购买大胆而美丽的女性运动服装
2017/05/22 全球购物
C#面试题问题集
2016/04/02 面试题
学校介绍信范文
2014/01/14 职场文书
cf战队收人广告词
2014/03/14 职场文书
祖国在我心中演讲稿300字
2014/05/04 职场文书
大学学风建设方案
2014/05/04 职场文书
2014年化工厂工作总结
2014/11/25 职场文书
幼儿园推普周活动总结
2015/05/07 职场文书
盘点2020年适合农村地区创业的项目
2019/10/16 职场文书
七年级作文之关于奶奶
2019/10/29 职场文书
前端canvas中物体边框和控制点的实现示例
2022/08/05 Javascript