tan*_*llo 3 python random pygame
我正在制作一个使用程序生成级别的游戏,当我测试时,我经常想重现一个级别.现在我还没有采取任何方法来保存关卡,但我认为更简单的解决方案就是重用Python随机模块使用的种子.但是我尝试过使用两者random.seed()并且random.setstate()似乎都不能可靠地重现结果.奇怪的是,如果我重复使用种子,我有时会连续几次获得相同的水平,但它永远不会完全100%可靠.我应该正常保存级别(作为包含其信息的文件)吗?
编辑:
感谢大家的帮助.事实证明,我的问题来自于我在Pygame中从组中随机选择精灵,这些精灵是在无序的字典视图中检索的.我改变了我的代码以避免使用Pygame的sprite组来完成该部分,现在它完美地工作了.
random.seed 应该工作正常,但请记住,它不是线程安全的 - 如果在其他地方同时使用随机数,您可能会在运行之间得到不同的结果.
在这种情况下,您应该使用一个实例random.Random()来获取私有随机数生成器
>>> import random
>>> seed=1234
>>> n=10
>>> random.Random(seed).sample(range(1000),n)
[966, 440, 7, 910, 939, 582, 671, 83, 766, 236]
>>>
Run Code Online (Sandbox Code Playgroud)
对于给定的种子,将始终返回相同的结果