今天做到一个随机验证码的题:
python">import random as r
zmb = 'AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz'
r.seed(1)
code = ''
for i in range(4):code += r.choice(zmb)
print(code)
用到了random.seed方法,即随机种子
seed() 函数用于设置随机数生成器的种子,它在生成随机数时提供了可重复性。这个种子是生成随机数的起始点,相同种子生成的随机数序列是确定性的,也就是说,在相同的种子下,每次生成的随机数序列都是一样的。
在很多编程语言和库中,seed() 函数被用于初始化伪随机数生成器。在 Python 中,它常常与 random 模块、numpy 库或者机器学习库(比如 PyTorch、TensorFlow)中的随机数生成相关的函数一起使用
Python 中的 random 模块:random.seed(seed_value),用于生成伪随机数序列。
NumPy 中的 numpy.random:numpy.random.seed(seed_value),用于生成 NumPy 库中的随机数组。
机器学习库中的随机性控制:比如 PyTorch 中的 torch.manual_seed(seed) 用于控制随机数生成,在模型训练中确保重复性。
深度学习框架中的 GPU 随机性控制:对于使用 GPU 的深度学习框架(如 PyTorch、TensorFlow),通常也会有类似 torch.cuda.manual_seed(seed) 的函数,用于设置 GPU 相关的随机种子,以保证实验结果的一致性。
python">import randomseed_value = 42 #可以随机设置
random.seed(seed_value)
for i in range(5):random_number = random.random()print('random_number_{}:{}'.format(i, random_number))
当我修改循环次数为3时,会发现输出结果和循环5次生成的前三次结果相同。
python">import numpy as np
np.random.seed(0) # 先定义一个随机数种子
print(np.random.rand(5)) # "随机"生成5个数
(1)随机数种子相当于给我们一个初值,之后按照固定顺序生成随机数(也就是我们说的超级长的 list )
(2)随机数种子对后面的结果一直有影响,在一个随机数种子后生成的随机数都受这个随机数种子的影响,即生成的随机数都是由这个随机数种子给的初值,按照固定顺序生成的。
(3)每次使用之前都需要调用一下:np.random.seed(0)
(4)np.random.seed(0)中参数0是随便取的,可以认为是初值的标志,每次按照这个标志都可以得到相同的初值
参考:https://blog.csdn.net/weixin_51390582/article/details/124246873