许多计算机应用程序需要生成随机数。但是,它们都不产生真正的随机数。像其他编程技术一样,Python使用伪随机数生成器。Python的随机生成基于产生53位精度浮点数的Mersenne Twister算法。该技术快速且线程安全,但不适用于加密目的。
Python的标准库包含random模块,该模块定义用于处理随机化的各种功能。
random.seed() -此函数初始化随机数生成器。导入随机模块时,将在系统时间的帮助下初始化生成器。要重新设置生成器的种子,请使用任何int,str,byte或bytearray对象。
random.getstate() -此函数与setstate()函数一起帮助一次又一次地再现相同的随机数据。该getstate()函数返回随机数生成器的内部状态。
random.setstate() -此函数恢复生成器的内部状态。
以下函数处理随机整数生成-
random.randrange() -此函数在给定范围之间生成一个随机整数。它可以采用三个参数。random.randrange(start, stop, step)
start和step参数是可选的。它们的默认值分别为0和1。步骤确定连续数字之间的间隔。>>> random.randrange(10)
5
>>> random.randrange(10, 20)
17
>>> random.randrange(100, 200, 2)
188
(注意:请记住,以上语句的输出以及本文中的其余语句可能与随机生成的不同)
random.randint() -此函数在两个参数之间生成一个随机整数。类似于randrange()没有步长参数的功能。启动参数是强制性的。>>> random.randint(1,10)
6
>>> random.randint(100, 200)
134
以下函数处理浮点随机数。
random.random() -此函数随机生成一个介于0.0和1.0之间的浮点数>>> random.random()
0.668544544081956
random.uniform() -此函数返回两个参数之间的浮点随机数。>>> random.uniform(0.5,1.5)
1.2760281470664903
>>> random.uniform(1,10)
7.336985794193224
>>> random.uniform(10,5)
7.817794757786727
以下函数作用于序列对象,即。字符串,列表或元组。
random.choice() -此函数从序列中选择一个随机元素。如果序列为空,则抛出IndexError。>>> random.choice("Nhooo")
'o'
>>> random.choice(range(10))
2
>>> random.choice([15,31,6,29,55, 5])
55
>>> random.choice((15,31,6,29,25, 55))
15
random.choices() -此函数以随机方式从列表中选择多个元素。此功能的第一个参数是顺序,第二个参数是要选择的数量。>>> name = "nhooo"
>>> random.choices(name, k = 2)
['T', 'o']
random.shuffle() -此函数以可变序列对元素重新排序并将其随机放置。>>> num = [10,20,30,40,50]
>>> random.shuffle(num)
>>> num
[50, 20, 40, 30, 10]
random.sample() -此函数适用于不可变序列。它从序列中返回一个随机选择的项目的列表,保持原样。>>> name = "nhooo"
>>> nm = random.sample(name, k = 2)
>>> name, nm
('nhooo', ['i', 'a'])