如何在Python中设置种子以实现可复现的运行?
问题原因与解决方案
你遇到的问题核心是:Python标准库的random模块和numpy.random模块使用完全独立的随机数生成器,二者的种子状态互不共享。你只设置了random.seed(1),但实际调用的numpy.random.permutation受numpy自身的随机种子控制,因此无法复现结果。
正确设置方式
要让numpy.random.permutation的结果可复现,需要针对numpy的随机生成器设置种子,而非仅设置标准库random的种子:
方案一:仅设置numpy随机种子
修改代码如下,确保numpy的随机状态被固定:
import numpy import random order = [1,2,3,4,5] numpy.random.seed(1) # 设置numpy专属的随机种子 random_num = list(numpy.random.permutation(order)) print(random_num)
每次运行这段代码,都会得到完全一致的输出(具体值由种子1决定)。
方案二:同时设置两个模块的种子(若代码混用两者)
如果你的代码后续还会用到random模块的随机函数(比如random.shuffle),可以同时设置两个模块的种子,确保所有随机操作都能复现:
import numpy import random order = [1,2,3,4,5] random.seed(1) numpy.random.seed(1) random_num = list(numpy.random.permutation(order)) # 后续若有random模块的操作,比如 random.shuffle(order),也能保证结果一致 print(random_num)
内容的提问来源于stack exchange,提问作者Marloes
相关产品推荐
相关产品推荐

