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中文乱码的解决方法
Nov 04 Python
Python ORM框架SQLAlchemy学习笔记之数据查询实例
Jun 10 Python
Python生成验证码实例
Aug 21 Python
解析Python中的异常处理
Apr 28 Python
python查找指定具有相同内容文件的方法
Jun 28 Python
Python 内置函数memoryview(obj)的具体用法
Nov 23 Python
Selenium控制浏览器常见操作示例
Aug 13 Python
Python3 读、写Excel文件的操作方法
Oct 20 Python
Python生成器的使用方法和示例代码
Mar 04 Python
详解用pyecharts Geo实现动态数据热力图城市找不到问题解决
Jun 26 Python
python判断字符串以什么结尾的实例方法
Sep 18 Python
Django对接elasticsearch实现全文检索的示例代码
Aug 02 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用GD库生成高质量的缩略图片
2011/03/09 PHP
8个PHP数组面试题
2015/06/23 PHP
PHP模板引擎Smarty内建函数详解
2016/04/11 PHP
php微信公众号js-sdk开发应用
2016/11/28 PHP
解决laravel(5.5)访问public报错的问题
2019/10/12 PHP
JQuery 选择器 xpath 语法应用
2010/05/13 Javascript
High Performance JavaScript(高性能JavaScript)读书笔记分析
2011/05/05 Javascript
Bootstrap与KnockoutJs相结合实现分页效果实例详解
2016/05/03 Javascript
BootstrapTable与KnockoutJS相结合实现增删改查功能【一】
2016/05/10 Javascript
js定时器实例分享
2016/12/20 Javascript
Javascript Event(事件)的传播与冒泡
2017/01/23 Javascript
jquery.validate表单验证插件使用详解
2017/06/21 jQuery
javascript实现考勤日历功能
2018/11/29 Javascript
详解vue使用插槽分发内容slot的用法
2019/03/28 Javascript
搭建vscode+vue环境的详细教程
2020/08/31 Javascript
解决Element中el-date-picker组件不回填的情况
2020/11/07 Javascript
微信小程序自定义支持图片的弹窗
2020/12/21 Javascript
[14:20]刀塔大凶女神互压各路奇葩屌丝
2014/05/16 DOTA
Python文档生成工具pydoc使用介绍
2015/06/02 Python
Python使用asyncio包处理并发详解
2017/09/09 Python
python爬虫爬取某站上海租房图片
2018/02/04 Python
分享vim python缩进等一些配置
2018/07/02 Python
python对象转字典的两种实现方式示例
2019/11/07 Python
pytorch 模型的train模式与eval模式实例
2020/02/20 Python
Python pip安装第三方库实现过程解析
2020/07/09 Python
Python+Selenium实现自动化的环境搭建的步骤(图文)
2020/09/01 Python
利用纯css3实现的文字亮光特效的代码演示
2014/11/27 HTML / CSS
美国波道夫·古德曼百货官网:Bergdorf Goodman
2017/11/07 全球购物
荷兰皇家航空公司中国官网:KLM中国
2017/12/13 全球购物
自考毕业生自我鉴定
2013/11/04 职场文书
播音主持女孩的自我评价分享
2013/11/20 职场文书
优秀员工表扬信
2014/01/17 职场文书
我的小天地教学反思
2014/04/30 职场文书
2015年初一班主任工作总结
2015/05/13 职场文书
《平移和旋转》教学反思
2016/02/19 职场文书
超级详细实用的pycharm常用快捷键
2021/05/12 Python