滚雪球学 Python 之内置 random 模块
橡皮擦,一个逗趣的互联网高级网虫,新的系列,让我们一起
Be More Pythonic
。
已完成的文章清单
滚雪球学 Python 第二轮开启,进阶之路,列表与元组那些事儿
说完列表说字典,说完字典说集合,滚雪球学 Python
关于 Python 中的字符串,我在补充两点,滚雪球学 Python
列表推导式与字典推导式,滚雪球学 Python
滚雪球学 Python 之 lambda 表达式
滚雪球学 Python 之内置函数:filter、map、reduce、zip、enumerate
Python 中级知识之装饰器,滚雪球学 Python
滚雪球学 Python 之闭包操作,本系列第 8 篇文章
滚雪球学 Python 之怎么玩转时间和日期库
滚雪球学 Python 之作用域下的 global 和 nonlocal 关键字
哈希吧,滚雪球学 Python 哈希表与可哈希对象
十二、Python 内置模块之 random
random 库是 Python 中生成随机数的标准库,包含的函数清单如下:
基本随机函数:
seed
、random
、getstate
、setstate
;扩展随机函数:
randint
、getrandbits
、randrange
、choice
、shuffle
、sample
;分布随机函数:
uniform
、triangular
、betavariate
、expovariate
、gammavariate
、gauss
、lognormvariate
、normalvariate
、vonmisesvariate
、paretovariate
、weibullvariate
。
发现单词 variate
出现频率比较高,该但是是变量的意思。
12.1 基本随机函数
12.1.1 seed 与 random 函数
seed 函数初始化一个随机种子,默认是当前系统时间。
random 函数 生成一个 [0.0,1.0) 之间的随机小数 。
具体代码如下:
其中需要说明的是 random.seed
函数, 通过 seed 函数 可以每次生成相同的随机数,例如下述代码:
在不同的代码上获取到的值是不同的,但是 x 与 y 是相同的。
12.1.2 getstate() 和 setstate(state)
getstate
函数用来记录随机数生成器的状态,setstate
函数用来将生成器恢复到上次记录的状态。
输出的随机数两次一致。
12.2 扩展随机函数
random 扩展随机函数有如下几个:
12.2.1 randint 和 randrange
randint
生成一个 [x,y]
区间之内的整数。
randrange
生成一个 [m,n)
区间之内以 k
为步长的随机整数。
测试代码如下:
这两个函数比较简单,randint
函数原型如下:
参数 start
表示最小值,参数 stop
表示最大值,两头都是闭区间,也就是 start
和 stop
都能被获取到。
randrange
函数原型如下:
如果函数调用时只有一个参数,默认是从 0 到该参数值,该函数与 randint
区别在于,函数是左闭右开,最后一个参数是步长。
查阅效果,可以复制下述代码运行:
12.2.2 getrandbits(k) 和 choice(seq)
getrandbits
生成一个 k 比特长的随机整数,实际输出的是 k 位二进制数转换成的十进制数。
choice
从序列中随机选择一个元素。
getrandbits(k)
函数可以简单描述如下:输出一个 $[0,2^k-1]$ 范围内一个随机整数,k
表示的是 2 进制的位数。
choice
就比较简单了,从列表中返回一个随机元素。
12.2.3 shuffle(seq) 和 sample(pop,k)
shuffle
函数用于将序列中的元素随机排序,并且原序列被修改。
sample
函数用于从序列或者集合中随机选择 k 个选择,原序列不变。
shuffle
函数只能用于可变序列,不可变序列(如元组)会出现错误。
12.3 分布随机函数
该部分涉及的比较多,重点展示重要和常见的一些函数。
12.3.1 uniform(a,b) 、betavariate 和 triangular 函数
uniform
生成一个 [a,b]
之间的随机小数,采用等概率分布。
betavariate
生成一个 [0,1]
之间的随机小数,采用 beta
分布。
triangular
生成一个 [low,high]
之间的随机小数,采用三角分布。
在使用 uniform
时候需要注意,如果 a<b,那么生成一个 b-a 之间的小数。
12.3.2 其它分布随机函数
以下都是生成随机数的方法,只是底层核心算法不同。
、、、、、、、。
expovariate
:生成一个(0,∞)
之间的随机整数,指数分布;gammavariate
:采用 gamma 分布;gauss
:采用高斯(正太)分布;lognormvariate
:对数正太分布;normalvariate
:正太分布;vonmisesvariate
:冯米赛斯分布;paretovariate
:帕累托分布;weibullvariate
:韦伯分布。
12.4 这篇博客的总结
本篇博客学习了 Python 中随机数相关的知识点,希望对你有所帮助。
相关阅读
博主 ID:梦想橡皮擦,希望大家<font color="red">点赞</font>、<font color="red">评论</font>、<font color="red">收藏</font>。
版权声明: 本文为 InfoQ 作者【梦想橡皮擦】的原创文章。
原文链接:【http://xie.infoq.cn/article/b8ca79db3ea1f522f1e40608f】。文章转载请联系作者。
评论