import numpy as npnp.random.seed(2) # 生成随机种子2 一次使用机会 作用在下一个随机数生成的时候
a = np.random.random() # 使用随机种子2
b = np.random.random() # 因为随机种子使用完了 ! 这里使用默认按系统根据时间作为seed参数的随机种子
print(a) # 随机种子2的随机数
print(b) # 根据系统时间为参数生成的随机数
第一次给python file命名的时候用了random.py。发现会报错,因为numpy里面的random模块和file名重了,所以报错,后面改为seed则可以正常使用,但是生成的随机数不同。
由于您的
random.py
脚本中也包含了尝试从NumPy库中导入random
模块的代码,这就造成了一个循环导入的问题(circular import),因为random.py
在尝试导入NumPy的random
模块时,又尝试从它自身(而不是NumPy库)中导入np.random
,这就导致了AttributeError
。要解决这个问题,您需要将您的Python脚本重命名为一个不与NumPy库中任何模块名称相同的名称。例如,您可以将
random.py
重命名为my_random_script.py
或其他任何不与NumPy库冲突的名称。
在NumPy中,当你使用np.random.seed(2)
设置随机种子后,每次调用np.random.random()
或其他基于随机数的函数(如np.random.randn()
, np.random.uniform()
等)时,都会生成一个基于该种子值的随机数。然而,由于这些随机数生成器是伪随机数生成器,它们会按照一种确定的算法来产生看似随机的序列。
在你给出的例子中,a
和b
都是基于相同的种子值2生成的随机数,但由于它们是在不同的时间点(即不同的函数调用)生成的,所以它们会是不同的数。这是伪随机数生成器的一个关键特性:即使使用相同的种子,每次调用随机数生成函数时,你都会得到一个不同的随机数(在序列中的下一个数)。
简而言之,a
和b
不一样是因为它们是基于相同种子值的伪随机数生成序列中的不同数。
import numpy as np
np.random.seed(2)
a= np.random.random()#相同seed(2)种子
np.random.seed(2)
b= np.random.random()#相同seed(2)种子
print(a)
print(b)
此时生成相同的随机数。