需要帮助理解这里的概念 - 我有这个代码
import random
random.seed(a=57)
def run_round(info):
random.seed(a=57)
d = {}
for i in info:
performance_value = random.normalvariate(info[i][0], info[i][1])
d[i] = performance_value
return d
info = {'abc': (100, 5), 'bcd': (95, 5)}
print(run_round(info))
现在如果我在python3中运行这个程序5次,输出是 -
{'bcd': 86.51389158254244, 'abc': 105.76045089520113}
{'abc': 91.51389158254244, 'bcd': 100.76045089520113}
{'abc': 91.51389158254244, 'bcd': 100.76045089520113}
{'bcd': 86.51389158254244, 'abc': 105.76045089520113}
{'bcd': 86.51389158254244, 'abc': 105.76045089520113}
在python2中,输出是 -
{'bcd': 86.51389158254244, 'abc': 105.76045089520113}
{'bcd': 86.51389158254244, 'abc': 105.76045089520113}
{'bcd': 86.51389158254244, 'abc': 105.76045089520113}
{'bcd': 86.51389158254244, 'abc': 105.76045089520113}
{'bcd': 86.51389158254244, 'abc': 105.76045089520113}
5仅供参考,我的意思是说为什么python3中的值存在差异,如果我在某些情况下给出了相同的种子。
编辑 -
尝试了random.seed(a=57, version=1)
并得到了这个结果 -
{'abc': 91.51389158254244, 'bcd': 100.76045089520113}
{'abc': 91.51389158254244, 'bcd': 100.76045089520113}
{'abc': 91.51389158254244, 'bcd': 100.76045089520113}
{'bcd': 86.51389158254244, 'abc': 105.76045089520113}
{'bcd': 86.51389158254244, 'abc': 105.76045089520113}
我不明白为什么即使我的种子保持不变也会有结果差异。