1. random模块介绍
random 模块用于实现各种分布的伪随机数生成器,可以根据不同的实数分布来随机生成值,如随机生成指定范围的整数、浮点数、序列等。该模块中的多数函数都取决于 random() 函数,该函数通过 Mersenne Twister 作为核心生成器在 [0.0,1.0) 区间范围内均匀生成随机浮点数。
2. betavariate()方法——返回0到1之间的随机数
betavariate() 方法用于以 beta 分布的概率分布返回 0 到 1 之间的随机数。语法格式如下:
random.betavariate(alpha, beta)
参数说明:
-
alpha、beta :要求 alpha >0,beta > 0。
-
返回值:返回介于 0~1 之间的随机数。
使用 betavariate() 方法以 beta 分布的概率分布返回 0 到 1 之间的随机数,代码如下:
import random # 导入随机数模块
print(random.betavariate(1, 3)) # 打印0~1之间的随机数
3. choice()方法——从非空序列中返回一个随机元素
choice() 方法用于从非空序列中返回一个随机元素。语法格式如下:
random.choice(seq)
参数说明:
-
seq :表示需要随机抽取的序列。
-
返回值:从非空序列中返回一个随机元素。
使用 choice() 方法在指定的序列中随机获取元素,代码如下:
import random # 导入随机数模块
number_list = [1,2,3,4,5] # 数值列表
str_tuple = (‘1’,’3’,’5’) # 字符元组
print(‘列表随机元素为:',random.choice(number_list))
print(‘元组随机元素为:',random.choice(str_tuple))
4. choices()方法——返回序列的随机元素
choices() 方法是 Python3.6 版本中新增的方法,是 choice() 方法的升级版。语法格式如下:
random.choices(population, weights=None, *, cum_weights=None, k=1)
参数说明:
-
population :表示集群中随机抽取 K 个元素。
-
weights :表示相对权重列表。
-
cum_weights :表示累计权重,该参数与 weights 参数不能同时存在。
-
返回值:返回序列的随机元素。
使用 choices() 方法获取指定序列中的随机元素,代码如下:decimal
import random # 导入随机数模块
print(random.choices([‘apple’,’orange’,’banana’])) # 随机输出列表中的元素
5. expovariate()方法——返回指数分布的随机数
expovariate() 方法用于返回指数分布的随机数。语法格式如下:
random.expovariate(lambd)
参数说明:
-
lambd :表示为 1.0 除以所需的平均值,该值为非 0。如果 lambd 为正,则返回值的范围为0到正无穷大;如果 lambd 为负,则返回值从负无穷大到 0。
-
返回值:返回指数分布的随机数。
使用 expovariate() 方法获取指数分布的随机数,代码如下:
import random # 导入随机数模块
print(random.expovariate(3.14)) # 打印指数分布的随机数
6. gammavariate()方法——返回以gamma分布的随机数
gammavariate() 方法用于获取以 gamma 分布的随机数。语法格式如下:
random.gammavariate(alpha, beta)
参数说明:
-
alpha、beta :要求 alpha>0,beta>0。
-
返回值:返回以 gamma 分布的随机数。
使用 gammavariate() 方法获取以 gamma 分布的随机数,代码如下:
import random # 导入随机数模块
print(random.gammavariate(1,3))
7. gauss()方法——返回以高斯分布的随机数
gauss() 方法用于获取以高斯分布的随机数。语法格式如下:
random.gauss(mu,sigma)
参数说明:
-
mu :表示均值。
-
sigma :表示偏差值。
-
返回值:返回以高斯分布的随机数。
使用 gauss() 方法获取以高斯分布的随机数,代码如下:
import random # 导入随机数模块
print(random.gauss(1, 3))
8. getrandbits()方法——生成一个K(指定值)随机位的整数
getrandbits() 方法用于生成一个 K(指定值)随机位的整数,该方法支持 Mersenne Twister 类型的生成器。语法格式如下:
random.getrandbits(k)
参数说明:
-
k :表示用 k 随机位生成一个整数。
-
返回值:返回用参数 k 随机位生成的一个整数。
使用 getrandbits() 方法生成一个 K(指定值)随机位的整数,代码如下:
import random # 导入随机数模块
print(random.getrandbits(5)) # 打印随机位整数
9. getstate()方法——返回一个当前生成器内部状态的对象
getstate() 方法用于获取当前生成器内部状态的对象。语法格式如下:
random.getstate()
参数说明:
- 返回值:返回一个当前生成器内部状态的对象。
使用 getstate() 方法获取当前生成器内部状态的对象,代码如下:
import random # 导入随机数模块
print(random.getstate()) # 打印当前生成器内部状态的对象
10. lognormvariate()方法——返回以对数正态分布的随机数
lognormvariate() 方法用于获取以对数正态分布的随机数。语法格式如下:
random.lognormvariate(mu, sigma)
参数说明:
-
mu :表示平均值,可以是任何值。
-
sigma :表示标准偏差,必须大于零。
-
返回值:返回以对数正态分布的随机数。
使用 lognormvariate() 方法获取以对数正态分布的随机数,代码如下:
import random # 导入随机数模块
print(random.lognormvariate(1,3))
11. normalvariate()方法——返回以正态分布的随机数
normalvariate() 方法用于获取以正态分布的随机数。语法格式如下:
random.normalvariate(mu,sigma)
参数说明:
-
mu :表示平均值,可以是任何值。
-
sigma :表示标准偏差,必须大于零。
-
返回值:返回以正态分布的随机数。
使用 normalvariate() 方法获取以正态分布的随机数,代码如下:
import random # 导入随机数模块
print(random.normalvariate(1, 3))
12. paretovariate()方法——返回以Pareto分布的随机数
paretovariate() 方法用于获取以 Pareto 分布的随机数。语法格式如下:
random.paretovariate(alpha)
参数说明:
-
alpha :表示形状参数。
-
返回值:返回以 Pareto 分布的随机数。
使用 paretovariate() 方法获取以 Pareto 分布的随机数,代码如下:
import random # 导入随机数模块
print(random.paretovariate(1))
13. randint()方法——获取指定范围的随机整数
randint() 方法用于获取指定范围的随机整数。语法格式如下:
random.randint(a,b)
参数说明:
-
a :表示随机整数范围的起始值。
-
b :表示随机整数范围的结束值,随机出现的整数包含 b 参数。
-
返回值:返回指定范围的随机整数。
使用 randint() 方法获取指定范围的随机整数,代码如下:
import random # 导入随机数模块
print(random.randint(0,2)) # 打印随机整数
14. random()方法——获取0.0~1.0范围内随机浮点数
random() 方法用于获取 0.0~1.0 范围内随机浮点数。语法格式如下:
random.random()
参数说明:
- 返回值:返回 0.0~1.0 之间的随机浮点数。
使用 random() 方法获取随机浮点数,代码如下:
import random # 导入随机数模块
print(random.random()) # 打印0.0至1.0之间的随机浮点数
15. randrange()方法——获取指定范围的随机整数
randrange() 方法用于获取指定范围的随机整数。语法格式如下:
random.randrange(stop)
random.randrange(start, stop[,step])
参数说明:
-
stop :在没有指定 start 参数时表示 0 至 stop 之间的一个随机整数,其中不包含 stop 指定的值。
-
start :表示随机范围的起始值。指定该参数后,stop 参数将作为随机范围的结束值。
-
step :表示步长。
-
返回值:返回指定范围的随机整数。
使用 randrange() 方法获取指定范围的随机整数,代码如下:
import random # 导入随机数模块
print(random.randrange(5)) # 打印0至5之间的随机整数,其中不包含5
print(random.randrange(1,5,2)) # 打印1至5之间的随机整数,其中不包含5,步长为2
16. sample()方法——返回无重复随机数列表
sample() 方法用于从序列中随机抽取指定数量且不重复的元素所形成的新序列,可处理不可变序列。语法格式如下:
random.sample(population,k)
参数说明:
-
population :表示需要抽取的可变序列或不可变序列。
-
k :表示抽取元素的个数。
-
返回值:返回在指定序列中抽取指定数量且不重复元素所形成的新序列。
使用 sample() 方法从指定序列中随机抽取指定数量且不重复的元素形成的新序列,代码如下:
import random # 导入随机数模块
number_list = [1,2,3,4,5] # 数值列表
str_tuple = (‘6’,’7’,’8’,’9’,’0’) # 字符元组decimal
print(‘随机抽取可变序列:',random.sample(number_list,3))
print(‘随机抽取不可变序列:',random.sample(str_tuple,3))
17. seed()方法——初始化随机数生成器
seed() 方法用于初始化随机数生成器,可以在调用其它方法之前使用,以实现随机相同的数值。语法格式如下:
random.seed(a=None, version=2)
参数说明:
-
a :表示需要指定的种子,如果未提供 a 或者 a=None,则使用系统时间作为种子。种子相同时即可随机生成相同的数值。
-
version :默认值为 2,如果参数 a 为整数将不计较参数 version 对应的值是否相同;如果参数a 为字符类型,此时需要参数 version 对应的值相同。
使用 seed() 方法,通过设置相同的种子数随机生成相同数值,代码如下:
import random # 导入随机数模块
random.seed() # 默认种子
print(‘默认种子:',random.random())
random.seed() # 默认种子2
print(‘默认种子2:',random.random())
random.seed(a=1) # 整数种子
print(‘整数种子:',random.random())
random.seed(a=1) # 整数种子2
print(‘整数种子2:',random.random())
random.seed(a=’1’,version=1) # 字符种子
print(‘字符种子:',random.random())
random.seed(a=’1’,version=1) # 字符种子2
print(‘字符种子2:',random.random())
18. setstate()方法——恢复生成器的内容状态
setstate() 方法用于恢复生成器的内容状态。语法格式如下:
random.setstate(state)
参数说明:
- state :表示通过 getstate() 方法获取到的生成器内部状态对象。
使用 setstate() 方法恢复生成器的内容状态,代码如下:
import random # 导入随机数模块
state = random.getstate() # 获取当前生成器内部状态的对象
print(state) # 打印第一次获取的生成器内容状态
random.seed() # 系统时间作为种子,初始化生成器
random.setstate(state) # 恢复生成器的内部状态,此处不恢复,new_state将生成新的对象
new_state = random.getstate() # 获取新生成器内部状态的对象
print(new_state) # 打印新生成器内部状态的对象
19. shuffle()方法——将指定序列中的元素顺序随机排列
shuffle() 方法用于将指定序列中的元素顺序随机排列,只针对可变序列。语法格式如下:
random.shuffle(x[,random])
参数说明:
-
x :表示需要随机排列元素的序列。
-
random :可选参数,返回 [0.0,1.0) 中的随机浮点,默认情况下,该参数为 random() 方法。
使用 shuffle() 方法将指定序列中的元素顺序随机排列,代码如下:
import random # 导入随机数模块
number_list = [1,2,3,4,5] # 数值列表
print(‘原列表顺序为:',number_list)
random.shuffle(number_list) # 将列表元素随机排列
print(‘随机排列后的列表:',number_list)
20. triangular()方法——返回以三角形分布的随机数
triangular() 方法用于获取以三角形分布的随机数。语法格式如下:
random.triangular(low, high, mode)
参数说明:
-
low :默认为 0。
-
high :默认为 1。
-
mode :默认为边界之间的中点,给出对称分布。
-
返回值:返回以三角形分布的随机数。
使用 triangular() 方法以三角分布的概率分布返回随机数,代码如下:
import random # 导入随机数模块
print(random.triangular(0, 1, 0.5)) # 打印0~1之间的随机数
21. uniform()方法——获取指定范围之间的随机浮点数
uniform() 方法用于获取指定范围之间的随机浮点数。语法格式如下:
random.uniform(a,b)
参数说明:
-
a :表示指定随机范围的起始值,该值可能会出现在结果中。
-
b :表示指定随机范围的结束值,该值可能会出现在结果中。
-
返回值:返回一个 a~b 之间随机出现的浮点数。
使用 uniform() 方法获取指定范围之间的随机浮点数,代码如下:
import random # 导入随机数模块
print(random.uniform(1.0,5.0)) # 指定参数为浮点数
print(random.uniform(1,5)) # 指定参数为整数
print(random.uniform(5.0,1.0)) # 参数a大于参数b
22. vonmisesvariate()方法——返回以von Mises分布的随机数
vonmisesvariate() 方法用于获取以 von Mises 分布的随机数。语法格式如下:
random.vonmisesvariate(mu, kappa)
参数说明:
-
mu :表示平均角,弧度范围在 0~2 pi 之间。
-
kappa :表示非负集中因子。如果 kappa 为零,则该分布简化为统一随机角,范围在 0~2 pi 之间。
-
返回值:返回以 von Mises 分布的随机数。
使用 vonmisesvariate() 方法获取以 von Mises 分布的随机数,代码如下:
import random # 导入随机数模块
print(random.vonmisesvariate(1,3))
23. weibullvariate()方法——返回以Weibull分布的随机数
weibullvariate() 方法用于获取以 Weibull 分布的随机数。语法格式如下:
random.weibullvariate(alpha, beta)
参数说明:
-
alpha :比例参数。
-
beta :形状参数。
-
返回值:返回以 Weibull 分布的随机数。
使用 weibullvariate() 方法获取以 Weibull 分布的随机数,代码如下:
import random # 导入随机数模块
print(random.weibullvariate(1,3))