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解释器理解Python中的字节码
Apr 01 Python
将Emacs打造成强大的Python代码编辑工具
Nov 20 Python
尝试用最短的Python代码来实现服务器和代理服务器
Jun 23 Python
用python记录运行pid,并在需要时kill掉它们的实例
Jan 16 Python
python使用tensorflow保存、加载和使用模型的方法
Jan 31 Python
Django教程笔记之中间件middleware详解
Aug 01 Python
Django框架之登录后自定义跳转页面的实现方法
Jul 18 Python
django基于存储在前端的token用户认证解析
Aug 06 Python
基于Python实现大文件分割和命名脚本过程解析
Sep 29 Python
Pytorch中的自动求梯度机制和Variable类实例
Feb 29 Python
python中@contextmanager实例用法
Feb 07 Python
基于python的matplotlib制作双Y轴图
Apr 20 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 表单提交给自己
2008/07/24 PHP
php urlencode()与urldecode()函数字符编码原理详解
2011/12/06 PHP
PHP MSSQL 分页实例
2016/04/13 PHP
PHP页面间传递值和保持值的方法
2016/08/24 PHP
PHP 多进程与信号中断实现多任务常驻内存管理实例方法
2019/10/04 PHP
tp5.1 框架路由操作-URL生成实例分析
2020/05/26 PHP
js 获取class的元素的方法 以及创建方法getElementsByClassName
2013/03/11 Javascript
javascript使用window.open提示“已经计划系统关机”的原因
2014/08/15 Javascript
jQuery获取上传文件的名称的正则表达式
2015/05/21 Javascript
jQuery实现鼠标经过事件的延时处理效果
2020/08/20 Javascript
javascript:void(0)是什么意思及href=#与href=javascriptvoid(0)的区别
2015/11/13 Javascript
探讨:JavaScript ECAMScript5 新特性之get/set访问器
2016/05/05 Javascript
浅谈javascript:两种注释,声明变量,定义函数
2016/09/29 Javascript
JS无缝滚动效果实现方法分析
2016/12/21 Javascript
vue2.0结合Element实现select动态控制input禁用实例
2017/05/12 Javascript
通过函数作用域和块级作用域看javascript的作用域链
2018/08/05 Javascript
js的各种数据类型判断的介绍
2019/01/19 Javascript
详解Python中的array数组模块相关使用
2016/07/05 Python
python微信跳一跳系列之自动计算跳一跳距离
2018/02/26 Python
python获取代理IP的实例分享
2018/05/07 Python
Python 实现域名解析为ip的方法
2019/02/14 Python
python数据类型可变不可变知识点总结
2020/03/06 Python
matplotlib 曲线图 和 折线图 plt.plot()实例
2020/04/17 Python
沙特阿拉伯网上购物:Sayidaty Mall
2018/05/06 全球购物
澳大利亚实惠时尚女装商店:Katies
2019/06/16 全球购物
程序员机试试题汇总
2012/03/07 面试题
高中的自我鉴定
2013/12/16 职场文书
安全技术说明书
2014/05/09 职场文书
环保倡议书300字
2014/05/15 职场文书
年检委托书
2014/08/30 职场文书
四风问题专项整治工作情况报告
2014/10/28 职场文书
2014年基层党支部工作总结
2014/12/04 职场文书
捐款感谢信
2015/01/20 职场文书
干货干货!2019最新优秀创业计划书
2019/03/21 职场文书
解决pytorch读取自制数据集出现过的问题
2021/05/31 Python
苹果M1芯片安装nginx 并且部署vue项目步骤详解
2021/11/20 Servers