您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如何与子进程共享父进程的numpy随机状态?

如何与子进程共享父进程的numpy随机状态?

即使您设法做到这一点,我也不认为它会做您想要的。一旦有多个进程并行地从同一个随机状态中拉出,就不再确定它们各自到达状态的顺序,这意味着您的运行实际上不会重复。可能有一些解决方法,但这似乎是一个不小的问题。

同时,有一个解决方案应同时解决您想要的问题和不确定性问题:

生成子进程之前,请向RNG询问随机数,并将其传递给子进程。然后,孩子可以用该数字播种。然后,每个子代将具有与其他子代不同的随机序列,但是如果您使用固定种子重新运行整个应用程序,则每个子代将具有与同一子代相同的随机序列。

如果您的主流程执行了可能不确定地依赖于子流程执行的任何其他RNG工作,那么您将需要在提取任何其他随机数之前按顺序为所有子流程预先生成种子。

正如senderle在评论中指出的那样:如果您不需要多次不同的运行,而只需要进行一次固定运行,则甚至不需要从已播种的RNG中提取种子。只需使用一个从1开始的计数器,并为每个新进程递增它,并将其用作种子即可。我不知道这是否可以接受,但是如果可以接受,很难比这更简单。

正如Amir在评论中指出的那样:一种更好的方法是每次生成新进程时都绘制一个随机整数,并将该随机整数传递给新进程,以使用该整数设置numpy的随机种子。这个整数确实可以来自np.random.randint()

其他 2022/1/1 18:30:44 有447人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶