我已经阅读了文档,但我仍然发现很难理解使用
之间的区别numpy.random.RandomState(0)
或
numpy.random.seed(0)
他们是否都确保选择随机值的过程在运行过程中是相同且一致的?
答案 0 :(得分:8)
numpy.random.seed(0)
重置现有全局RandomState
实例的状态,该实例是numpy.random
命名空间中函数的基础。
numpy.random.RandomState(0)
会返回一个新的种子RandomState
实例,但不会更改任何内容。您必须使用返回的RandomState
实例来获得一致的伪随机数。如果您使用numpy.random
命名空间中的函数,则不会获得一致的伪随机数,因为它们来自与您刚刚创建的实例不同的RandomState
实例。
如果您关心可重复性,则最好将代码结构化以传递RandomState
个实例。全球国家很糟糕。 C.F. Consistenly create same random numpy array