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中声明只包含一个元素的元组数据方法
Aug 25 Python
win7上python2.7连接mysql数据库的方法
Jan 14 Python
Python常见字符串操作函数小结【split()、join()、strip()】
Feb 02 Python
PyQT实现多窗口切换
Apr 20 Python
浅谈python中字典append 到list 后值的改变问题
May 04 Python
对python_discover方法遍历所有执行的用例详解
Feb 13 Python
使用Python的OpenCV模块识别滑动验证码的缺口(推荐)
May 10 Python
python 爬取古诗文存入mysql数据库的方法
Jan 08 Python
pycharm激活码有效到2020年11月底
Sep 18 Python
Pytorch使用MNIST数据集实现CGAN和生成指定的数字方式
Jan 10 Python
Python爬虫入门案例之爬取去哪儿旅游景点攻略以及可视化分析
Oct 16 Python
使用Python开发冰球小游戏
Apr 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如何实现Unicode和Utf-8编码相互转换
2015/07/29 PHP
php上传大文件设置方法
2016/04/14 PHP
PHP错误和异常处理功能模块示例
2016/11/12 PHP
PHP中localeconv()函数的用法
2019/03/26 PHP
javascript延时重复执行函数 lLoopRun.js
2007/06/29 Javascript
javascript中字符串拼接需注意的问题
2010/07/13 Javascript
JQuery将文本转化成JSON对象需要注意的问题
2011/05/09 Javascript
jQuery form插件之formDdata参数校验表单及验证后提交
2016/01/23 Javascript
javascript中异常处理案例(推荐)
2016/10/03 Javascript
详解vue中computed 和 watch的异同
2017/06/30 Javascript
微信小程序实战篇之购物车的实现代码示例
2017/11/30 Javascript
node.js中路由,中间件,ge请求和post请求的参数详解
2017/12/26 Javascript
对Vue beforeRouteEnter 的next执行时机详解
2018/08/25 Javascript
原生js实现each方法实例代码详解
2019/05/27 Javascript
详解nvm管理多版本node踩坑
2019/07/26 Javascript
node.js使用net模块创建服务器和客户端示例【基于TCP协议】
2020/02/14 Javascript
Python采用socket模拟TCP通讯的实现方法
2014/11/19 Python
Python 包含汉字的文件读写之每行末尾加上特定字符
2016/12/12 Python
Django Web开发中django-debug-toolbar的配置以及使用
2018/05/06 Python
Python列表生成式与生成器操作示例
2018/08/01 Python
python中pip的安装与使用教程
2018/08/10 Python
python字典值排序并取出前n个key值的方法
2018/10/17 Python
Python中字符串List按照长度排序
2019/07/01 Python
python使用rsa非对称加密过程解析
2019/12/28 Python
HTML5中input输入框默认提示文字向左向右移动的示例代码
2020/09/10 HTML / CSS
UGG雪地靴荷兰官网:UGG荷兰
2016/09/09 全球购物
Marmot土拨鼠官网:美国专业户外运动品牌
2018/01/11 全球购物
Microsoft Advertising美国:微软搜索广告
2019/05/01 全球购物
法律工作求职自荐信
2013/10/31 职场文书
文秘专业大学生求职信
2013/11/10 职场文书
给海归自荐信的建议
2013/12/13 职场文书
高中生操行评语大全
2014/04/25 职场文书
同学聚会策划方案
2014/06/06 职场文书
社区创先争优承诺书
2014/08/30 职场文书
2015年出纳年终工作总结
2015/05/14 职场文书
vue项目配置sass及引入外部scss文件
2022/04/14 Vue.js