【Python 标准库】伪随机数生成库 — random

随机函数在很多科学计算中都会用到,比如生成一系列随机数来计算平均值、高斯分布、伽马分布、贝塔分布、对数正态分布等。

几乎所有模块函数都依赖于基本函数 random() ,它在半开放区间 [0.0,1.0) 内均匀生成随机浮点数。 Python 使用 Mersenne Twister 作为核心生成器。 它产生 53 位精度浮点数,周期为 219937-1 ,其在 C 中的底层实现既快又线程安全。 Mersenne Twister 是现存最广泛测试的随机数发生器之一。 但是,因为完全确定性,它不适用于所有目的,并且完全不适合加密目的。

random 模块官方文档:https://docs.python.org/3/library/random.html

random 模块部分常用函数:

函数 功能
random() 返回一个在 [0.0, 1.0) 范围内的随机浮点数
uniform(a, b) 在指定范围内([a, b])返回一个随机浮点数 N
triangular(low, high, mode) 返回三角形分布的随机数,low、high 为返回值的上下限,mode 为中值
betavariate(alpha, beta) 求 Beta 分布的随机数,其中 alpha > 0beta > 0,返回值的范围介于 0 和 1 之间
expovariate(lambd) 指数分布,lambd 是 1.0 除以所需的平均值,它应该是非零的
如果 lambd 为正,则返回值的范围为 0 到正无穷大
如果 lambd 为负,则返回值的范围为负无穷大到 0
gammavariate(alpha, beta) Gamma 分布,参数的条件是 alpha > 0beta > 0
gauss(mu, sigma) 高斯分布,mu 是平均值,sigma 是标准差
lognormvariate(mu, sigma) 对数正态分布,mu 是平均值,sigma 是标准差,mu 可以是任何值,sigma 必须大于零
normalvariate(mu, sigma) 正态分布,mu 是平均值,sigma 是标准差
vonmisesvariate(mu, kappa) 冯·米塞斯分布(von Mises),mu 是平均角度,以弧度表示,介于 0 和 2 * pi 之间
kappa 是浓度参数,必须大于或等于零
如果 kappa 等于零,则该分布在 0 到 2 * pi 的范围内减小到均匀的随机角度
paretovariate(alpha) 帕累托分布,alpha 是形状参数
weibullvariate(alpha, beta) 威布尔分布,alpha 是比例参数,beta 是形状参数

常见函数应用举例:

random.random() 生成一个在 0.0 <= x < 1.0 之间的浮点数

>>> import random      # 导入 random 模块
>>> random.random()    # 调用 random() 方法
0.7811493181713127     # 随机生成一个大于等于 0,小于 1 的浮点数

random.uniform(a, b) 在指定范围 [a, b] 内获取随机数

>>> import random
>>> random.uniform(-5, 5)
-4.117969777026395
>>> random.uniform(-10, -5)
-8.257739458506384
>>> random.uniform(1.8, 9.2)
8.129467781976114

random.triangular(low, high, mode) 返回三角形分布的随机数,返回的随机浮点数 N 满足 low <= N <= high,并且在这些边界之间指定 mode,low 和 high 默认值为 0 和 1,mode 参数默认为边界之间的中点,持续使用该函数,可以得到以 mode 为对称点的随机分布数据集(在图上体现为一个三角形分布)

>>> import random
>>> random.triangular()
0.3604089623206311
>>> random.triangular(0,10)
7.215758147092778
>>> random.triangular(0,10,15)
10.965963151355984

random.betavariate(alpha, beta) 求 Beta 分布,参数条件:alpha > 0,beta > 0,返回值介于 0 ~ 1 之间

>>> import random
>>> random.betavariate(4, 9)
0.13445358577865857
发布了149 篇原创文章 · 获赞 518 · 访问量 46万+

猜你喜欢

转载自blog.csdn.net/qq_36759224/article/details/104457326