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的subprocess模块总结
Nov 07 Python
总结Python编程中三条常用的技巧
May 11 Python
python下载微信公众号相关文章
Feb 26 Python
Django-Model数据库操作(增删改查、连表结构)详解
Jul 17 Python
Django实现发送邮件找回密码功能
Aug 12 Python
Python shutil模块用法实例分析
Oct 02 Python
python隐藏类中属性的3种实现方法
Dec 19 Python
Python换行与不换行的输出实例
Feb 19 Python
python中threading开启关闭线程操作
May 02 Python
什么是Python包的循环导入
Sep 08 Python
详解python百行有效代码实现汉诺塔小游戏(简约版)
Oct 30 Python
详解Python requests模块
Jun 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
E路文章系统PHP
2006/12/11 PHP
php array_walk() 数组函数
2011/07/12 PHP
php实现建立多层级目录的方法
2014/07/19 PHP
简单实现PHP留言板功能
2016/12/21 PHP
php 使用mpdf实现指定字段配置字体样式的方法
2019/07/29 PHP
推荐一些非常不错的javascript学习资源站点
2007/08/29 Javascript
IE DOM实现存在的部分问题及解决方法
2009/07/25 Javascript
node.js中的path.basename方法使用说明
2014/12/09 Javascript
angularJS结合canvas画图例子
2015/02/09 Javascript
JavaScript 变量、作用域及内存
2015/04/08 Javascript
jQuery实现高亮显示网页关键词的方法
2015/08/07 Javascript
使用JQuery实现的分页插件分享
2015/11/05 Javascript
原生js模拟淘宝购物车项目实战
2015/11/18 Javascript
js实现input密码框提示信息的方法(附html5实现方法)
2016/01/14 Javascript
jQuery实现拼图小游戏(实例讲解)
2017/07/24 jQuery
详解vue静态资源打包中的坑与解决方案
2018/02/05 Javascript
微信小程序实现弹出菜单功能
2018/06/12 Javascript
JS变量提升原理与用法实例浅析
2020/05/22 Javascript
vue swipeCell滑动单元格(仿微信)的实现示例
2020/09/14 Javascript
python django 实现验证码的功能实例代码
2017/05/18 Python
详解Python核心编程中的浅拷贝与深拷贝
2018/01/07 Python
详解python3中tkinter知识点
2018/06/21 Python
Python数据类型之String字符串实例详解
2019/05/08 Python
用Python将Excel数据导入到SQL Server的例子
2019/08/24 Python
PyCharm第一次安装及使用教程
2020/01/08 Python
Django中Q查询及Q()对象 F查询及F()对象用法
2020/07/09 Python
css3 background属性调整增强介绍
2010/12/18 HTML / CSS
Nike英国官网:Nike.com (UK)
2017/02/13 全球购物
英国知名化妆品网站:Revolution Beauty(原TAM Beauty)
2018/02/28 全球购物
教学实验楼管理制度
2014/02/01 职场文书
高三学习决心书
2014/03/11 职场文书
2015年学校财务工作总结
2015/05/19 职场文书
2016党员三严三实心得体会
2016/01/15 职场文书
会计专业自荐信范文
2019/05/22 职场文书
如何利用Python实现n*n螺旋矩阵
2022/01/18 Python
详解pytorch创建tensor函数
2022/03/22 Python