Python 我应该使用numpy';什么是随机发生器?

Python 我应该使用numpy';什么是随机发生器?,python,numpy,Python,Numpy,自2014年以来,我一直在维护/更新/扩展一个大型Python代码。最近我遇到了numpy(2018-05),现在我有点困惑 我不确定是什么改变了,我是否应该相应地升级我的代码以使用新的。例如,文件中说: # Do this from numpy.random import default_rng rng = default_rng() vals = rng.standard_normal(10) more_vals = rng.standard_normal(10) # instead of

自2014年以来,我一直在维护/更新/扩展一个大型Python代码。最近我遇到了numpy(2018-05),现在我有点困惑

我不确定是什么改变了,我是否应该相应地升级我的代码以使用新的。例如,文件中说:

# Do this
from numpy.random import default_rng
rng = default_rng()
vals = rng.standard_normal(10)
more_vals = rng.standard_normal(10)

# instead of this
from numpy import random
vals = random.standard_normal(10)
more_vals = random.standard_normal(10)
我所有的代码都依赖于第二个块中显示的(旧的?)语法(即,我不使用
default\rng
,而是对
np.random.seed()
np.random.uniform()
np.random.normal()
的简单调用),我不知道为什么要使用第一个块而不是第二个块

有人能解释一下吗?

1.在python2(旧代码)中,默认值不可用

2.在python3(新代码)中,您提到的第一个和第二个块都将在没有错误的情况下运行并执行


3.未来,他们可能会从python的未来版本中删除random.standard_normal,这就是为什么他们提到使用默认值而不是random.standard_normal在这个阶段,这是一个选择的问题。对于许多应用程序,默认实现都可以正常工作。如果不知道更多关于用例的细节,就不可能知道。基于您自2014年以来一直成功地完成这项工作的事实,您现在一切正常。如果您的代码正常工作,我不会太担心。请仔细阅读本节。您是否关心生成器的确切位流在将来某个时候可能会发生变化?如果不是的话,完全忽略这个问题。如果你更新这个问题来说明你的具体要求,我会在回答中详细说明。我不知道你会不会在乎,那样的话,你应该换一个。今后,版本之间默认函数的再现性不再得到保证。只有在特定的发电机实现中才能保证再现性问题不是功能不存在(它们会存在)。问题是,对于给定的种子,它们可能不会产生相同的数量。