4

需要帮助来理解这里的概念 - 我有这个代码

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}  

我不明白为什么即使我的种子保持不变,结果也会有所不同。

4

0 回答 0