Python中Random和Math模块学习笔记


Posted in Python onMay 18, 2015

由于最近经常使用到Python中random,math和time``datetime模块, 所以决定花时间系统的学习一下

1. math模块

math中的函数不可以用于太过复杂的数的运算, 如果需要复杂数的运行最好使用cmath模块中同名函数, 如果想要更加高级的数学功能,可以考虑选择标准库之外的numpy和scipy模块,它们不但支持数组和矩阵运算,还有丰富的数学和物理方程可供使用

1.1. 数学常量

math.pi 这个数学常量等于 3.141592...
math.e 这个数学常量 e = 2.718281...,

1.2. 常用简单函数

math.ceil(x) : 对x向上取整,返回最小整数值大于或者等于x

# -*- coding:utf-8 -*-

import math  #仅在第一次声明, 以下都将省略

print math.ceil(math.pi)  #math.pi是圆周率pi, 类似于C/C++中的宏

//输出4

math.floor(x) : 对x向下取整, 返回整数值小于或者等于x

>>> import math

>>> math.floor(math.pi)

3.0

math.pow(x,y) : 指数运算,得到x的y次方
>>> math.pow(2, 3)

8.0

math.log(x[, base]) : 对数运算,默认基底为e的对数运算。使用base参数时,改变对数的基底, 变为以base为底的对数运算
>>> math.log(10)

2.302585092994046

>>> math.log(8, 2)   #log(x)/log(base).

3.0

math.sqrt(x) 平方根计算
>>> math.sqrt(4)

2.0

math.fabs(x) 取绝对值
math.factorial(x) 求阶乘, 即x!
math.exp(x) 求e的x次方
1.3. 三角函数
以下函数都接收一个弧度(radian)为单位的x作为参数

math.acos(x) #求arccos(x)

math.asin(x) #求arcsin(x)

math.atan(x) #求arctan(x)

math.cos(x)  #求cos(x)

math.sin(x)  #求sin(x)

math.tan(x)  #求tan(x)

math.degrees(x) 角度制转化为弧度制
math.radians(x) 弧度制转化为角度制

>>> math.degrees(math.pi / 2)

90.0

1.5. 双曲函数和特殊函数

math.sinh(x), math.cosh(x), math.tanh(x), math.asinh(x), math.acosh(x), math.atanh(x)
还有些函数基本没用过

2. random模块

random模块的作用是产生随机数, 这个模块实现了伪随机数产生器

1.1. 常用函数

random.seed([x]) 用户初始化一个随机数种子, 可选参数可以是任何hashtable对象,默认使用系统时间
random.randint(a, b) 返回一个a到b之间的整数

random.randrange([start], stop[, step]) 从指定范围内,按指定基数递增的集合中 获取一个随机数。如:random.randrange(10, 100, 2),结果相当于从[10, 12, 14, 16, … 96, 98]序列中获取一个随机数。random.randrange(10, 100, 2)在结果上与 random.choice(range(10, 100, 2) 等效。

random.randrange(start, stop, step)等价于random.choice(range(start, stop, step))

>>> random.randrange(10, 100, 2)

90

1.2. 随机挑选和排序
random.choice(sequence) : 从序列中获取一个随机元素. 参数sequence表示一个有序类型。这里要说明 一下:sequence在python不是一种特定的类型,而是泛指一系列的类型。list, tuple, 字符串都属于sequence

>>> random.choice(range(10))

1

>>> random.choice((1, 2, 3, 4))

3

random.sample(sequence, k) # 从指定序列中随机获取指定长度k的片断。sample函数不会修改原有序列
>>> lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 

>>> new_lst = random.sample(lst, 6)

>>> print new_lst

[8, 9, 2, 1, 5, 4]

>>> print lst

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

random.shuffle(x[, random]),用于将一个列表中的元素打乱, 不会生成新的列表
>>> lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

>>> random.shuffle(lst)

>>> print lst

[10, 5, 2, 7, 3, 9, 4, 8, 6, 1]

1.3. 随机生成实数

生成的实数符合均匀分布(uniform distribution)

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

>>> random.random()

0.019433835195078797

>>> random.uniform(3, 8)

6.830376841208885

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

其余是一些目前没用过的函数, 以后用到了再补充

3. 参考链接

random官网文档 
math官方文档

Python 相关文章推荐
Python采用socket模拟TCP通讯的实现方法
Nov 19 Python
Django的session中对于用户验证的支持
Jul 23 Python
python2.7的编码问题与解决方法
Oct 04 Python
Pycharm学习教程(1) 定制外观
May 02 Python
python xlsxwriter库生成图表的应用示例
Mar 16 Python
python爬取淘宝商品销量信息
Nov 16 Python
python基于TCP实现的文件下载器功能案例
Dec 10 Python
pytorch 实现将自己的图片数据处理成可以训练的图片类型
Jan 08 Python
python利用百度云接口实现车牌识别的示例
Feb 21 Python
Django利用elasticsearch(搜索引擎)实现搜索功能
Nov 26 Python
python用分数表示矩阵的方法实例
Jan 11 Python
Pytest中skip和skipif的具体使用方法
Jun 30 Python
浅析Python中将单词首字母大写的capitalize()方法
May 18 #Python
Python NumPy库安装使用笔记
May 18 #Python
Python中转换角度为弧度的radians()方法
May 18 #Python
Python Matplotlib库入门指南
May 18 #Python
解读Python中degrees()方法的使用
May 18 #Python
python修改操作系统时间的方法
May 18 #Python
Python中的hypot()方法使用简介
May 18 #Python
You might like
PHP中英混合字符串截取函数代码
2011/07/17 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(九)
2014/06/24 PHP
从零开始学YII2框架(四)扩展插件yii2-kartikgii
2014/08/20 PHP
8个必备的PHP功能开发
2015/10/02 PHP
PHP中header函数的用法及其注意事项详解
2016/06/13 PHP
js获取url参数的使用扩展实例
2007/12/29 Javascript
EasyUI的treegrid组件动态加载数据问题的解决办法
2011/12/11 Javascript
扩展IE中一些不兼容的方法如contains、startWith等等
2014/01/09 Javascript
javascript:FF/Chrome与IE动态加载元素的区别说明
2014/01/26 Javascript
jQuery中parents()方法用法实例
2015/01/07 Javascript
jquery插件EasyUI中form表单提交实例分享
2016/01/11 Javascript
Vue 单文件中的数据传递示例
2017/03/21 Javascript
js中null与空字符串""的区别讲解
2019/01/17 Javascript
如何优雅的在一台vps(云主机)上面部署vue+mongodb+express项目
2019/01/20 Javascript
Node.js实现简单管理系统
2019/09/23 Javascript
vue 在服务器端直接修改请求的接口地址
2020/12/19 Vue.js
[00:34]DOTA2上海特级锦标赛 VG战队宣传片
2016/03/04 DOTA
Python中为什么要用self探讨
2015/04/14 Python
介绍Python的Django框架中的QuerySets
2015/04/20 Python
Python基于sftp及rsa密匙实现远程拷贝文件的方法
2016/09/21 Python
Python中sort和sorted函数代码解析
2018/01/25 Python
python中实现字符串翻转的方法
2018/07/11 Python
Python爬虫学习之获取指定网页源码
2019/07/30 Python
Python如何使用PIL Image制作GIF图片
2020/05/16 Python
协程Python 中实现多任务耗资源最小的方式
2020/10/19 Python
详解anaconda安装步骤
2020/11/23 Python
村级四风对照检查材料
2014/08/24 职场文书
县政府领导班子“四风”方面突出问题整改措施
2014/09/23 职场文书
2014年宣传部工作总结
2014/11/12 职场文书
2015年党员自我剖析材料
2014/12/17 职场文书
入党积极分子半年考察意见
2015/06/02 职场文书
团支部组织委员竞选稿
2015/11/21 职场文书
《跨越海峡的生命桥》教学反思
2016/02/18 职场文书
小型企业的绩效考核制度模板
2019/11/21 职场文书
golang 比较浮点数的大小方式
2021/05/02 Golang
python中Pyqt5使用Qlabel标签播放视频
2022/04/22 Python