在 Python 中生成伪随机数
许多计算机应用程序需要生成随机数。但是,它们都不能生成真正的随机数。Python,与任何其他编程语言一样,使用伪随机数生成器。Python 的随机数生成基于 Mersenne Twister 算法,该算法生成 53 位精度的浮点数。该技术速度快且线程安全,但不适用于加密目的。Python 的标准库包含 random 模块,该模块定义了用于处理随机化的各种函数。
以下函数处理随机整数生成。
-
random.seed() − 此函数初始化随机数生成器。当导入 random 模块时,生成器会在系统时间帮助下初始化。要重新播种生成器,请使用任何 int、str、byte 或 byte 数组对象。
-
random.getstate() − 此函数与 setstate() 函数一起帮助一遍又一遍地重现相同的数据。getstate() 函数返回随机数生成器的内部状态。
-
random.randrange() − 此函数在给定范围内生成一个随机整数。它可以接受三个参数。
使用 'random.seed()'
使用 random.seed() 方法生成随机数。这是借助伪随机数生成器通过对给定值执行某些操作来完成的。random 模块使用**种子值**作为基础在 Python 中创建随机数。
示例
我们可以提供 int、str、bytes 或 byte 数组来重新播种生成器,以确保可重现的结果。
import random # Seed with a specific value random.seed(10) # Will always produce the same output if seeded with 10(base) print(random.random()) random.seed(12) print(random.random())
以下是上述代码的输出 -
0.5714025946899135 0.4745706786885481
使用 'random.getstate()'
使用 random.getstate 方法检索捕获随机数生成器当前内部状态的对象。稍后可以将此对象传递给**setstate()**方法以将生成器恢复到此状态。
示例
在下面的示例中,getstate() 返回生成器的当前内部状态,可以将其保存以稍后重现相同的随机数序列。而**setstate(state)** 函数恢复保存的状态。
import random state = random.getstate() # Generate some random numbers print(random.randint(1, 100)) print(random.randint(1, 100)) # Restore the saved state random.setstate(state) # Generates the same random numbers again print(random.randint(1, 100)) print(random.randint(1, 100))
输出
每次运行上述程序时,它都会生成随机数。
70 60 70 60
使用 'random.randrange()'
此 random.randrange() 方法从给定范围内返回一个随机选择的元素。此方法接受两个参数start 和stop。因此,它会在范围的起始值和结束值之间生成随机数。
示例
在下面的示例中,random.randrange(start, stop=None) 生成指定范围内的随机整数。start 是包含的,而stop 是不包含的。
import random # Random integer from 0 to 9 print(random.randrange(10)) # Random integer from 10 to 19 print(random.randrange(10, 20))
输出
每次运行上述程序时,它都会根据给定的起始值和结束值(范围)生成随机数。
3 15