numpy中RandomState和种子之间的区别

use*_*ser 7 python random numpy

我已阅读文档但我仍然发现难以理解使用的区别

numpy.random.RandomState(0) 
Run Code Online (Sandbox Code Playgroud)

要么

numpy.random.seed(0)
Run Code Online (Sandbox Code Playgroud)

它们是否都确保选择随机值的过程在运行中是相同且一致的?

Rob*_*ern 10

numpy.random.seed(0)重置RandomState作为numpy.random命名空间中的函数基础的现有全局实例的状态.

numpy.random.RandomState(0)返回一个新的种子RandomState实例,但不会改变任何东西.您必须使用返回的RandomState实例来获得一致的伪随机数.如果使用numpy.random命名空间中的函数,则不会获得一致的伪随机数,因为它们是从RandomState与您刚刚创建的实例不同的实例中提取的.

如果您关心可重复性,则最好将代码结构化以传递RandomState实例.全球国家很糟糕.Cf Consistenly创建相同的随机numpy数组