我想要一种方法来创建一个相当长的随机数序列,我可以向前和向后翻转。就像有"下一个"和"上一个"按钮的机器,会给你随机数。
类似于10位分辨率(即范围在0到1023之间的正整数)就足够了,并且需要一个超过100k个数字的序列。这是为了一个简单的游戏型应用程序,我不需要加密级别的随机性或其他什么,但我希望它感觉相当随机。然而,我的可用内存有限,所以我不能只是生成一大块随机数据并遍历它。我需要在"交互时间"中获取这些数字 - 我可以轻松地花费几毫秒的时间考虑下一个数字,但不舒服地超过那个时间。最终它将在某种微控制器上运行,可能只是Arduino。
我可以使用简单的线性同余生成器(LCG)来实现。向前很简单,要向后走,我需要缓存最近的数字并在一定间隔中存储一些点,以便从那里重新创建序列。
但也许有一些伪随机生成器可以让你向前和向后走?将两个线性反馈移位寄存器(LFSRs)连接起来以不同的方向滚动应该是可能的,对吗?或者我可以通过使用某种哈希函数来混淆索引号码,这样就可以解决问题了吗?我打算先尝试这个方法。
还有其他的想法吗?