Python中的random模块提供了大量用于生成随机数字的功能。下面是一些最常用方法。
random()方法:
这个方法返回0.0到1.0之间的一个随机浮点数,其中1.0是不包括的。
import random
print("随机数:", random.random())
randrange() 和 randint() 方法:
random库中的randrange()函数和randint()函数可以生成一个指定范围内的整数。
randrange()方法在指定范围内返回一个随机数,跟range()方法一样,你可以提供开始,结束,步进值。
import random
print("随机数:", random.randrange(1, 9)) # 实例化一个在1到8之间的随机数
randint()方法在指定范围内返回一个随机整数,包括两端值。
import random
print("随机数:", random.randint(20,30)) # 生成一个20到30之间的随机整数
choice()和samples()方法:
choice()方法可以从任何非空的序列(例如列表,元组等)返回一个随机项目。
import random
print("随机项目:", random.choice('hello, world')) # 在'hello, world'中随机选一个字符
samples()方法用于从指定序列中选择多个唯一随机项。
import random
print("随机项目", random.sample([1, 2, 3, 4, 5], 3)) # 在1,2,3,4,5中随机选3个数
random.uniform(a, b):
这个方法将随机生成一个指定范围内的浮点数,它在a和b之间(包含b)
import random
print("随机浮点数:", random.uniform(10, 20)) #生成一个10到20之间的随机浮点数
random.shuffle(x):
这个方法可以用来将一个列表中的元素打乱
import random
list = [1, 2, 3, 4, 5]
random.shuffle(list)
print("打乱后的列表:", list) #打乱列表中的元素
random.gauss(mu, sigma):
这个方法根据均值mu和标准差sigma,用于生成符合高斯分布的随机数
import random
print("高斯随机数:", random.gauss(0, 1)) #生成一个均值为0,标准差为1的高斯随机数
注意,random模块产生的随机数由一个固定的启动种子和一个大整数相乘产生的,因此如果利用random的话,多次调用会生成相同的随机数序列,尤其是在多线程下这种情况尤其明显。
随机种子的例子:
import random
random.seed(0) # 设置固定的随机种子
print(random.randint(1, 10)) # 生成的随机数是7
print(random.randint(1, 10)) # 生成的随机数是7
print(random.randint(1, 10)) # 生成的随机数是7
random.seed(0) # 重新设定随机种子
print(random.randint(1, 10)) # 生成的随机数还是7
从以上的例子中,你可以看出,如果我们设置一个固定的种子值,那么我们每次运行代码时,都会得到同样的“随机”结果。这个特性在Debug或者是为机器学习模型设定随机状态时非常有用。