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中__str__和__repr__方法的区别
Apr 17 Python
Python编程中归并排序算法的实现步骤详解
May 04 Python
基于pycharm导入模块显示不存在的解决方法
Oct 13 Python
浅谈python的dataframe与series的创建方法
Nov 12 Python
Python 实现数据结构-堆栈和队列的操作方法
Jul 17 Python
在Pytorch中计算卷积方法的区别详解(conv2d的区别)
Jan 03 Python
Python实现进度条和时间预估的示例代码
Jun 02 Python
基于Tensorflow的MNIST手写数字识别分类
Jun 17 Python
Python tkinter界面实现历史天气查询的示例代码
Aug 23 Python
使用Python通过oBIX协议访问Niagara数据的示例
Dec 04 Python
Python对excel的基本操作方法
Feb 18 Python
PyTorch 如何自动计算梯度
May 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
Amazon Prime Video平台《无限住人 -IMMORTAL-》2020年开始TV放送!
2020/03/06 日漫
150kHz到30Mhz完全冲浪手册
2020/03/20 无线电
探讨:parse url解析URL,返回其组成部分
2013/06/14 PHP
PHP利用REFERER根居访问来地址进行页面跳转
2013/09/28 PHP
php截取指定2个字符之间字符串的方法
2015/04/15 PHP
Yii开启片段缓存的方法
2016/03/28 PHP
Ubuntu 16.04中Laravel5.4升级到5.6的步骤
2018/12/07 PHP
PHP中遍历数组的三种常用方法实例分析
2019/06/24 PHP
Thinkphp 3.2框架使用Redis的方法详解
2019/10/24 PHP
在JavaScript中实现命名空间
2006/11/23 Javascript
使用jquery动态加载javascript以减少服务器压力
2012/10/29 Javascript
JS中的prototype与面向对象的实例讲解
2013/05/22 Javascript
js快速排序的实现代码
2013/12/08 Javascript
js网页实时倒计时精确到秒级
2014/02/10 Javascript
jQuery实现的手机发送验证码倒计时效果代码分享
2015/08/24 Javascript
通过BootStrap实现轮播图的实际应用
2016/09/26 Javascript
Easyui ueditor 整合解决不能编辑的问题(推荐)
2017/06/25 Javascript
jQuery 禁止表单用户名、密码自动填充功能
2017/10/30 jQuery
Node.js 中使用 async 函数的方法
2017/11/20 Javascript
JS异步函数队列功能实例分析
2017/11/28 Javascript
解决vue 引入子组件报错的问题
2018/09/06 Javascript
在vue中使用express-mock搭建mock服务的方法
2018/11/07 Javascript
基于vue实现移动端圆形旋钮插件效果
2018/11/28 Javascript
详解javascript 变量提升(Hoisting)
2019/03/12 Javascript
原生js实现购物车
2020/09/23 Javascript
[00:32]2018DOTA2亚洲邀请赛EG出场
2018/04/03 DOTA
使用Python写CUDA程序的方法
2017/03/27 Python
Django框架之DRF 基于mixins来封装的视图详解
2019/07/23 Python
django的model操作汇整详解
2019/07/26 Python
python中time库的实例使用方法
2019/10/31 Python
Python 使用双重循环打印图形菱形操作
2020/08/09 Python
使用HTML5加载音频和视频的实现代码
2020/11/30 HTML / CSS
美国亚马逊旗下时尚女装网店:SHOPBOP(支持中文)
2020/10/17 全球购物
个人总结怎么写
2015/02/26 职场文书
通知范文怎么写
2015/04/16 职场文书
女性健康讲座主持词
2015/07/04 职场文书