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的Tornado框架结合memcached页面改善博客性能
Apr 24 Python
Python中使用partial改变方法默认参数实例
Apr 28 Python
python实现爬虫统计学校BBS男女比例(一)
Dec 31 Python
利用Python操作消息队列RabbitMQ的方法教程
Jul 19 Python
Python 中的Selenium异常处理实例代码
May 03 Python
分享vim python缩进等一些配置
Jul 02 Python
python3使用QQ邮箱发送邮件
May 20 Python
Python实现删除排序数组中重复项的两种方法示例
Jan 31 Python
使用python写的opencv实时监测和解析二维码和条形码
Aug 14 Python
Python如何定义接口和抽象类
Jul 28 Python
浅谈Python3中print函数的换行
Aug 05 Python
python将下载到本地m3u8视频合成MP4的代码详解
Nov 24 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/06/12 PHP
PHP独立Session数据库存储操作类分享
2014/06/11 PHP
php网站被挂木马后的修复方法总结
2014/11/06 PHP
jQuery+PHP实现的掷色子抽奖游戏实例
2015/01/04 PHP
ajax+php实现无刷新验证手机号的实例
2017/12/22 PHP
HTML TO JavaScript 转换
2006/06/26 Javascript
不间断滚动JS打包类,基本可以实现所有的滚动效果,太强了
2007/12/08 Javascript
关于js类的定义
2011/06/28 Javascript
iframe窗口高度自适应的实现方法
2014/01/08 Javascript
即将发布的jQuery 3 有哪些新特性
2016/04/14 Javascript
Bootstrap CSS组件之面包屑导航(breadcrumb)
2016/12/17 Javascript
AngularJS打开页面隐藏显示表达式用法示例
2016/12/25 Javascript
Angular4学习教程之HTML属性绑定的方法
2018/01/04 Javascript
JavaScript继承定义与用法实践分析
2018/05/28 Javascript
Vue中使用sass实现换肤功能
2018/09/07 Javascript
jQuery插件实现非常实用的tab栏切换功能【案例】
2019/02/18 jQuery
详解Vue中CSS样式穿透问题
2019/09/12 Javascript
vue3+typescript实现图片懒加载插件
2020/10/26 Javascript
[01:14]3.19DOTA2发布会 三代刀塔人第二代
2014/03/25 DOTA
Python编程中使用Pillow来处理图像的基础教程
2015/11/20 Python
python Pygame的具体使用讲解
2017/11/03 Python
pytorch 在网络中添加可训练参数,修改预训练权重文件的方法
2019/08/17 Python
Python3加密解密库Crypto的RSA加解密和签名/验签实现方法实例
2020/02/11 Python
AUC计算方法与Python实现代码
2020/02/28 Python
Python Request类源码实现方法及原理解析
2020/08/17 Python
pandas apply使用多列计算生成新的列实现示例
2021/02/24 Python
真正了解CSS3背景下的@font face规则
2017/05/04 HTML / CSS
利用CSS3实现进度条的两种姿势详解
2017/03/21 HTML / CSS
全球地下的服装和态度:Slam Jam
2018/02/04 全球购物
SHEIN香港:价格实惠的女性时尚服装
2018/08/14 全球购物
科长竞聘演讲稿
2014/05/16 职场文书
八年级英语教学计划
2015/01/23 职场文书
以权谋私检举信范文
2015/03/02 职场文书
Java面试题冲刺第十七天--基础篇3
2021/08/07 面试题
Python使用socket去实现TCP客户端和TCP服务端
2022/04/12 Python
canvas 中如何实现物体的框选
2022/08/05 Javascript