首先,如果你想知道噪声(x)对同一个x总是返回相同的值,不管怎样,即使它从未被调用过,那么你根本就不能使用随机性。一个好的哈希函数是唯一的可能。在
但是,如果您只需要能够恢复以前的状态,该状态由以前探索过的所有点的值组成(从未探索过的点在保存和加载后可能会与您没有退出的情况不同……但是如果没有访问多个Universe,怎么会有人知道呢?),并且您不希望存储所有这些点,那么重新生成它们可能是合理的。在
但让我们后退一步。你想要一个类似哈希函数的东西。你能用散列函数吗?在
我可以想象hashlib中的算法太慢了(md5可能是最快的,但要全部测试),但如果没有实际测试,我不会拒绝它们。在
可能zlib.adler32(或zlib.crc32)的“随机周期”太短,但我不会拒绝它(除了hash),而不考虑它是否足够好。因此,即使是hash加上一个像样的固定端混合函数也可能足够好(至少在64位系统上)。在
Python没有现成的“介于”md5和“adler32”之间的东西。但是,您可以找到PyPI模块或数百种其他哈希算法的源代码。因此,如果您熟悉任何听起来不错的特定哈希算法,那么大多数哈希算法都很简单,您可能可以编写代码,例如,使用xor折叠的FNV hash比查看备选方案所花的时间要短。在
你也可以在游戏中保存一堆“随机存储”的文件。在
如果你已经用尽了所有的可能性,你真的需要更多的随机性,而不是一个足够快的散列函数和任意的盐可以给你,那么:
听起来你已经需要存储一个用户浏览过的点的列表了(因为你怎么知道你还需要恢复哪些点呢?)。顺序并不重要。所以,你可以按照探索的顺