[Python模块]随机数 random模块的速查与使用

版权声明:Powered by Hibiki Copyright None https://blog.csdn.net/xHibiki/article/details/83998752

模块介绍

Random模块提供各种用于生成伪随机数的函数,以及根据不同的实数分布来随机生成值的函数.虽然这些函数生成的数字好像是完全随机的,但是它们背后的系统是可预测的.如果要求真正随机数用于加密安全等相关功能,应左转模块os中的函数urandom
本模块的函数来源于Python3.7.1

1.种子,初始化相关

用于控制基础随机数生成器的状态.

函数 描述
getstate() 返回表示当前生成器状态的对象.稍后将该对象传递到setstate()来恢复状态
seed([x]) 初始化随机数生成器.x是(正)整数;如果省略x或x=None,则使用系统时间初始化;如果x非整数,则必须是可散列对象并将hash(x)作为种子
setstate() getstate()返回的对象中恢复随机数生成的状态

2.随机整数相关

用于操作随机整数

函数 描述
getrandbits(k) 创建包含k个随机位的长整数
randint(a,b) 返回[a,b]中一个随机整数
randrange([start],stop,[step]) 从range(start,stop,step)中随机选择一个数,不包括结束值

3.随机序列相关

用于产生随机序列数据

函数 描述
choice(seq) 从非空序列seq中选取一个元素
choices(seq[, weights[,cum]]) ,使用权重weight和累加权重cum从非空序列seq中选取一个元素,如果两者都未指定,则以相同概率进行选择
sample(seq,n) 从序列seq中随机选择n个值不同的元素
shuffle(seq[,random]) 随机打乱序列seq,random是可选参数,指定随机的生成函数

4.实数随机分布

生成实数的随机数.分布和参数名与概率和统计中使用的标准名称一致

函数 描述
betavariate(alpha,beta) 贝塔分布,alpha>-1,beta>-1,返回值范围(0,1)
expovariate(labmd) 指数分布,lambd是由1.0除以预期均值.返回值范围[0,+∞)
gammavariate(alpha,beta) 伽玛分布,alpha>-1,beta>0
gauss(mu,sigma) 高斯分布,均值为mu,标准差为sigma
lognormvariatemu,sigma() 对数正态分布,对该分布取自然对数得到均值为mu,标准差为sigma的正态分布
normalvariate(mu,sigma) 正态分布,均值为mu,标准差为sigma
paretovariate(alpha) Pareto分布,形状参数为alpha
random() 返回[0.0,1.0)中一个随机实数
uniform(a,b) 返回[a,b]中一个随机实数
triangular([low [,high [,mode]]]) 三角分布.随机数范围[low,high),模式为mode.默认low=0,high=1.0 ,mode设置为low和high的中点值
vonmisesvariate(mu,kappa) von Mises分布,mu是平均角,弧度范围在0~2*pi,kappa是非负集中因子.如果kappa=0,则该分布简化为统一随机角,范围在0~2*pi
weibullvariate(alpha,beta) Weibull分布,比例参数为alpha,形状参数为beta.

注意

1.该模块中的函数都不是线程安全的.如果在不同线程中生成随机数,就应当使用锁定以防止并发访问.
2.该模块生成的随机数都是确定的,不应用于摩玛
3.随机数生成的区间(在数值开始重复之前)是219937-1

猜你喜欢

转载自blog.csdn.net/xHibiki/article/details/83998752