首页 > 解决方案 > 在 Python/Numpy 中冻结或复制当前的 RandomState

问题描述

我尝试在 Python 中为2048游戏实现 Multi-Step-Player,它通过计算多个步骤中每个移动的最大分数来选择最佳移动。在每一步中,游戏都会在棋盘上随机生成一个新图块。我用np.random.RandomState这个。

问题:玩家模拟了几步以获得最佳移动后,随机状态发生了变化,由于生成的瓷砖不同,实际得分与预测的不同。

我的想法是在模拟下一步之前存储当前的 RandomState 并在之后恢复它,以便生成的图块相同。据我了解, RandomState 只是一个指针,但我还没有找到任何方法来复制或存储它。

有任何想法吗?谢谢!

标签: pythonnumpyrandom

解决方案


RandomState对象具有方法get_state(),并且set_state()- 只需使用这些方法:

state = np.random.get_state()
... # Do some simulations
np.random.set_state(state)

推荐阅读