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使用设计模式中的责任链模式与迭代器模式的示例
Mar 02 Python
Python脚本简单实现打开默认浏览器登录人人和打开QQ的方法
Apr 12 Python
python类:class创建、数据方法属性及访问控制详解
Jul 25 Python
windows环境下tensorflow安装过程详解
Mar 30 Python
通过shell+python实现企业微信预警
Mar 07 Python
Python TestCase中的断言方法介绍
May 02 Python
Python实现二叉树的最小深度的两种方法
Sep 30 Python
SpringBoot实现登录注册常见问题解决方案
Mar 04 Python
解决python cv2.imread 读取中文路径的图片返回为None的问题
Jun 02 Python
解决PyCharm无法使用lxml库的问题(图解)
Dec 22 Python
Python中使用Lambda函数的5种用法
Apr 01 Python
Python&Matlab实现灰狼优化算法的示例代码
Mar 21 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
Protoss兵种对照表
2020/03/14 星际争霸
咖啡产品发展的三大浪潮
2021/03/04 咖啡文化
PHP 定界符 使用技巧
2009/06/14 PHP
使用cookie实现统计访问者登陆次数
2013/06/08 PHP
php 购物车完整实现代码
2014/06/05 PHP
php日志函数error_log用法实例分析
2019/09/23 PHP
laravel框架邮箱认证实现方法详解
2019/11/22 PHP
Prototype Class对象学习
2009/07/19 Javascript
在JQuery dialog里的服务器控件 事件失效问题
2010/12/08 Javascript
js动态加载以及确定加载完成的代码
2011/07/31 Javascript
IE6浏览器下resize事件被执行了多次解决方法
2012/12/11 Javascript
获取客户端网卡MAC地址和IP地址实现JS代码
2013/03/17 Javascript
jQuery+jRange实现滑动选取数值范围特效
2015/03/14 Javascript
jquery 中ajax执行的优先级
2015/06/22 Javascript
jQuery满意度星级评价插件特效代码分享
2015/08/19 Javascript
jquery实现仿新浪微博带动画效果弹出层代码(可关闭、可拖动)
2015/10/12 Javascript
JQuery实现网页右侧随动广告特效
2016/01/17 Javascript
javascript瀑布流布局实现方法详解
2016/02/17 Javascript
jQuery 常见小例汇总
2016/12/14 Javascript
bootstrap日历插件datetimepicker使用方法
2016/12/14 Javascript
JavaScript使用简单正则表达式的数据验证功能示例
2017/01/13 Javascript
node.js操作MongoDB的实例详解
2017/10/11 Javascript
egg.js的基本使用和调用数据库的方法示例
2019/05/18 Javascript
electron 安装,调试,打包的具体使用
2019/11/06 Javascript
[48:38]DOTA2亚洲邀请赛 3.31 小组赛 B组 Mineski vs Secret
2018/03/31 DOTA
[01:00:49]DOTA2-DPC中国联赛 正赛 Ehome vs iG BO3 第二场 1月31日
2021/03/11 DOTA
Python实现抓取页面上链接的简单爬虫分享
2015/01/21 Python
Python处理PDF及生成多层PDF实例代码
2017/04/24 Python
使用Python写一个贪吃蛇游戏实例代码
2017/08/21 Python
详解将Django部署到Centos7全攻略
2018/09/26 Python
Django 配置多站点多域名的实现步骤
2019/05/17 Python
tensorflow 获取checkpoint中的变量列表实例
2020/02/11 Python
python如何实现word批量转HTML
2020/09/30 Python
学习型党组织心得体会
2014/09/12 职场文书
县委常委班子专题民主生活会查摆问题及整改措施
2014/09/27 职场文书
只需要12页,掌握撰写一流商业计划书的技巧
2019/05/07 职场文书