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实现带百分比的进度条
Jun 28 Python
Python之Web框架Django项目搭建全过程
May 02 Python
解决python3在anaconda下安装caffe失败的问题
Jun 15 Python
Python Dataframe 指定多列去重、求差集的方法
Jul 10 Python
Python3爬虫之urllib携带cookie爬取网页的方法
Dec 28 Python
浅谈Python批处理文件夹中的txt文件
Mar 11 Python
python实现简单加密解密机制
Mar 19 Python
python打造爬虫代理池过程解析
Aug 15 Python
Python 中如何实现参数化测试的方法示例
Dec 10 Python
tensorflow模型保存、加载之变量重命名实例
Jan 21 Python
使用 Python 在京东上抢口罩的思路详解
Feb 27 Python
python中对列表的删除和添加方法详解
Feb 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 5.3新特性命名空间规则解析及高级功能
2010/03/11 PHP
PHP仿盗链代码
2012/06/03 PHP
php中10个不同等级压缩优化图片操作示例
2016/11/14 PHP
PHP中通过getopt解析GNU C风格命令行选项
2019/11/18 PHP
JavaScript 变量命名规则
2009/09/23 Javascript
解析JavaScript中instanceof对于不同的构造器或许都返回true
2013/12/03 Javascript
AngularJS基础学习笔记之控制器
2015/05/10 Javascript
jQuery实现的图文高亮滚动切换特效实例
2015/08/10 Javascript
JS基于面向对象实现的拖拽库实例
2015/09/24 Javascript
JavaScript判断用户名和密码不能为空的实现代码
2016/05/16 Javascript
jQuery通过ajax请求php遍历json数组到table中的代码(推荐)
2016/06/12 Javascript
浅谈angularJS中的事件
2016/07/12 Javascript
纯JS代码实现隔行变色鼠标移入高亮
2016/11/23 Javascript
JavaScript正则表达式exec/g实现多次循环用法示例
2017/01/17 Javascript
微信小程序 五星评价功能的实现
2017/03/09 Javascript
Webpack性能优化 DLL 用法详解
2017/08/10 Javascript
JS沙箱模式实例分析
2017/09/04 Javascript
基于vue,vue-router, vuex及addRoutes进行权限控制问题
2018/05/02 Javascript
vue实现随机验证码功能(完整代码)
2019/12/10 Javascript
vue学习笔记之Vue中css动画原理简单示例
2020/02/29 Javascript
jQuery实现全选按钮
2021/01/01 jQuery
使用Python判断IP地址合法性的方法实例
2014/03/13 Python
Java多线程编程中ThreadLocal类的用法及深入
2016/06/21 Python
Python中pygal绘制雷达图代码分享
2017/12/07 Python
Python pygorithm模块用法示例【常见算法测试】
2018/08/16 Python
python实现大量图片重命名
2020/03/23 Python
opencv设置采集视频分辨率方式
2019/12/10 Python
Python filter()及reduce()函数使用方法解析
2020/09/05 Python
利用Python实现自动扫雷小脚本
2020/12/17 Python
德国古洛迷亚百货官网:GALERIA Kaufhof
2017/06/20 全球购物
龟牌英国商店:Turtle Wax Brand Store UK
2019/07/02 全球购物
岗位职责风险防控
2014/02/18 职场文书
《埃及的金字塔》教学反思
2014/04/07 职场文书
班主任评语大全
2014/04/26 职场文书
爱耳日活动总结
2014/04/30 职场文书
Python实战之OpenCV实现猫脸检测
2021/06/26 Python