在 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() 方法从给定范围内返回一个随机选择的元素。此方法接受两个参数startstop。因此,它会在范围的起始值和结束值之间生成随机数。

示例

在下面的示例中,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

更新于: 2024-10-09

3K+ 浏览量

启动您的 职业生涯

通过完成课程获得认证

开始
广告