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基础教程之popen函数操作其它程序的输入和输出示例
Feb 10 Python
Python使用代理抓取网站图片(多线程)
Mar 14 Python
Python获取运行目录与当前脚本目录的方法
Jun 01 Python
matplotlib绘制动画代码示例
Jan 02 Python
超简单的Python HTTP服务
Jul 22 Python
python提取xml里面的链接源码详解
Oct 15 Python
python中线程和进程有何区别
Jun 17 Python
解决TensorFlow调用Keras库函数存在的问题
Jul 06 Python
matplotlib 画双轴子图无法显示x轴的解决方法
Jul 27 Python
基于Python制作一副扑克牌过程详解
Oct 19 Python
Python函数中的不定长参数相关知识总结
Jun 24 Python
opencv深入浅出了解机器学习和深度学习
Mar 17 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提取字符串中网站url地址的方法
2014/12/03 PHP
thinkPHP实现MemCache分布式缓存功能
2016/03/23 PHP
浅析Yii2缓存的使用
2016/05/10 PHP
常用PHP封装分页工具类
2017/01/14 PHP
Laravel用户授权系统的使用方法示例
2018/09/16 PHP
HTML5如何适配 iPhone IOS 底部黑条
2021/03/09 HTML / CSS
JSON.stringify转换JSON时日期时间不准确的解决方法
2014/08/08 Javascript
JavaScript中判断整字类型最简洁的实现方法
2014/11/08 Javascript
JavaScript改变CSS样式的方法汇总
2015/05/07 Javascript
BootStrap入门教程(一)之可视化布局
2016/09/19 Javascript
ES6新特征数字、数组、字符串
2016/10/01 Javascript
Javascript动画效果(1)
2016/10/11 Javascript
微信小程序 页面跳转传递值几种方法详解
2017/01/12 Javascript
JavaScript 函数节流详解及方法总结
2017/02/09 Javascript
jQuery插件HighCharts实现的2D条状图效果示例【附demo源码下载】
2017/03/15 Javascript
从零开始最小实现react服务器渲染详解
2018/01/26 Javascript
vue.js实现的经典计算器/科学计算器功能示例
2018/07/11 Javascript
jQuery AJAX 方法success()后台传来的4种数据详解
2018/08/08 jQuery
Javascript迭代、递推、穷举、递归常用算法实例讲解
2019/02/01 Javascript
javascript实现点亮灯泡特效示例
2019/10/15 Javascript
vue远程加载sfc组件思路详解
2019/12/25 Javascript
Python的Django框架中的Context使用
2015/07/15 Python
python 画二维、三维点之间的线段实现方法
2019/07/07 Python
旅游网创业计划书
2014/01/31 职场文书
师说教学反思
2014/02/07 职场文书
志愿者活动总结
2014/04/28 职场文书
自强之星事迹材料
2014/05/12 职场文书
培训研修方案
2014/06/06 职场文书
销售目标责任书
2014/07/23 职场文书
个人三严三实对照检查材料
2014/09/25 职场文书
幼儿园教研工作总结2015
2015/05/12 职场文书
我的中国梦心得体会范文
2016/01/05 职场文书
个人向公司借款协议书
2016/03/19 职场文书
五年级作文之想象作文
2019/10/30 职场文书
Redis数据同步之redis shake的实现方法
2022/04/21 Redis
Windows10安装Apache2.4的方法步骤
2022/06/25 Servers