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操作消息队列RabbitMQ的方法教程
Jul 19 Python
浅谈Django学习migrate和makemigrations的差别
Jan 18 Python
Python对象中__del__方法起作用的条件详解
Nov 01 Python
python使用yield压平嵌套字典的超简单方法
Nov 02 Python
Python实现图片添加文字
Nov 26 Python
修改Pandas的行或列的名字(重命名)
Dec 18 Python
PyTorch中反卷积的用法详解
Dec 30 Python
Python版中国省市经纬度
Feb 11 Python
python中rc1什么意思
Jun 19 Python
Python手动或自动协程操作方法解析
Jun 22 Python
python实现图片,视频人脸识别(opencv版)
Nov 18 Python
Python基础学习之奇异的GUI对话框
May 27 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的Yii框架中的属性(Property)
2016/03/18 PHP
JavaScript中“+=”的应用
2007/02/02 Javascript
js用图作提交按钮或超连接
2008/03/26 Javascript
Jquery 表格合并的问题分享
2011/09/17 Javascript
使用非html5实现js板连连看游戏示例代码
2013/09/22 Javascript
浅析XMLHttpRequest的缓存问题
2013/12/13 Javascript
JSuggest自动匹配下拉框使用方法(示例代码)
2013/12/27 Javascript
JavaScript的作用域和块级作用域概念理解
2014/09/21 Javascript
jQuery动态背景图片效果实现方法
2015/07/03 Javascript
EasyUi combotree 实现动态加载树节点
2016/04/01 Javascript
jQuery grep()方法详解及实例代码
2016/10/30 Javascript
通过扫描二维码打开app的实现代码
2016/11/10 Javascript
Nodejs--post的公式详解
2017/04/29 NodeJs
Angular中$broadcast和$emit的使用方法详解
2017/05/22 Javascript
node.js中使用Export和Import的方法
2017/09/18 Javascript
vue2.0 computed 计算list循环后累加值的实例
2018/03/07 Javascript
Vue.js 时间转换代码及时间戳转时间字符串
2018/10/16 Javascript
vue移动端屏幕适配详解
2019/04/30 Javascript
Node.js一行代码实现静态文件服务器的方法步骤
2019/05/07 Javascript
Vue项目总结之webpack常规打包优化方案
2019/06/06 Javascript
JS实现页面跳转与刷新的方法汇总
2019/08/30 Javascript
JavaScript中数组去重的5种方法
2020/07/04 Javascript
浅谈vue 组件中的setInterval方法和window的不同
2020/07/30 Javascript
python对配置文件.ini进行增删改查操作的方法示例
2017/07/28 Python
Python 实现Windows开机运行某软件的方法
2018/10/14 Python
python爬虫获取新浪新闻教学
2018/12/23 Python
利用python绘制数据曲线图的实现
2020/04/09 Python
Pandas将列表(List)转换为数据框(Dataframe)
2020/04/24 Python
简单了解python关键字global nonlocal区别
2020/09/21 Python
Python生成pdf目录书签的实例方法
2020/10/29 Python
flask框架中的cookie和session使用
2021/01/31 Python
俄罗斯优惠券网站:BIGLION
2017/05/21 全球购物
门卫工作岗位职责
2013/12/17 职场文书
电脑教师的自我评价
2013/12/18 职场文书
2014年人事部工作总结
2014/12/03 职场文书
详解PHP服务器如何在有限的资源里最大提升并发能力
2021/05/25 PHP