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 httplib,smtplib使用方法
Sep 06 Python
从Python的源码来解析Python下的freeblock
May 11 Python
Python编程实现双击更新所有已安装python模块的方法
Jun 05 Python
python 接口_从协议到抽象基类详解
Aug 24 Python
scrapy爬虫实例分享
Dec 28 Python
python学习——内置函数、数据结构、标准库的技巧(推荐)
Apr 18 Python
Python OpenCV实现视频分帧
Jun 01 Python
PyQt5 实现字体大小自适应分辨率的方法
Jun 18 Python
PyTorch中的padding(边缘填充)操作方式
Jan 03 Python
python:批量统计xml中各类目标的数量案例
Mar 10 Python
如何基于Python实现word文档重新排版
Sep 29 Python
一篇文章搞懂python混乱的切换操作与优雅的推导式
Aug 23 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中 ob_start等函数截取标准输出的方法
2015/06/22 PHP
客户端脚本中常常出现的一些问题和调试技巧
2007/01/09 Javascript
Extjs根据条件设置表格某行背景色示例
2014/07/23 Javascript
Javascript学习笔记之相等符号与严格相等符号
2014/11/23 Javascript
JS判断是否360安全浏览器极速内核的方法
2015/01/29 Javascript
JQuery判断checkbox是否选中及其它复选框操作方法合集
2015/06/01 Javascript
JavaScript中setTimeout和setInterval函数的传参及调用
2016/03/11 Javascript
jquery删除数组中重复元素
2016/12/05 Javascript
jQuery弹出窗口打开链接的实现代码
2016/12/24 Javascript
在node.js中怎么屏蔽掉favicon.ico的请求
2017/03/01 Javascript
Spring Boot+AngularJS+BootStrap实现进度条示例代码
2017/03/02 Javascript
jQuery实现表单动态添加与删除数据操作示例
2018/07/03 jQuery
Vue实现调节窗口大小时触发事件动态调节更新组件尺寸的方法
2018/09/15 Javascript
解决Vue中 父子传值 数据丢失问题
2019/08/27 Javascript
JS前端面试必备——基本排序算法原理与实现方法详解【插入/选择/归并/冒泡/快速排序】
2020/02/24 Javascript
python实现360的字符显示界面
2014/02/21 Python
Python上传package到Pypi(代码简单)
2016/02/06 Python
Python的Django REST框架中的序列化及请求和返回
2016/04/11 Python
python取代netcat过程分析
2018/02/10 Python
python 构造三维全零数组的方法
2018/11/12 Python
对python打乱数据集中X,y标签对的方法详解
2018/12/14 Python
详解Python是如何实现issubclass的
2019/07/24 Python
创建Shapefile文件并写入数据的例子
2019/11/26 Python
python中从for循环延申到推导式的具体使用
2019/11/29 Python
如何用python处理excel表格
2020/06/09 Python
Python流程控制语句的深入讲解
2020/06/15 Python
W Concept美国:精选全球独立设计师
2017/02/22 全球购物
苏格兰销售女装、男装和童装的连锁店:M&Co
2018/03/16 全球购物
局域网标准
2016/09/10 面试题
2014年三八妇女节活动方案
2014/02/28 职场文书
贷款担保书范文
2014/05/13 职场文书
党的群众路线教育实践活动对照检查材料
2014/09/22 职场文书
2015年防灾减灾工作总结
2015/07/24 职场文书
用Python提取PDF表格的方法
2021/04/11 Python
实体类或对象序列化时,忽略为空属性的操作
2021/06/30 Java/Android
Win11安装升级时提示“该电脑必须支持安全启动”
2022/04/19 数码科技