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