在Python中生成伪随机数
许多计算机应用程序需要生成随机数。但是,它们都不产生真正的随机数。像其他编程技术一样,Python使用伪随机数生成器。Python的随机生成基于产生53位精度浮点数的MersenneTwister算法。该技术快速且线程安全,但不适用于加密目的。
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'])