我想要某种方法来创建一个相当长的随机数序列,我可以前后翻阅。就像一台带有“下一个”和“上一个”按钮的机器,它会给你随机数。
像 10 位分辨率(即 0 到 1023 范围内的正整数)之类的东西就足够了,并且有 >100k 的数字序列。这是一个简单的游戏类型的应用程序,我不需要加密强度随机性或任何东西,但我希望它感觉相当随机。不过,我的可用内存量有限,所以我不能只生成一大块随机数据并遍历它。我需要在“交互时间”中获取数字——我可以轻松地花几毫秒思考下一个数字,但不会比这更舒服。最终它将在某种微控制器上运行,可能只是一个 Arduino。
我可以用一个简单的线性同余生成器(LCG)来做到这一点。向前走很简单,向后走我必须缓存最近的数字并每隔一段时间存储一些点,这样我就可以从那里重新创建序列。
但也许有一些伪随机生成器可以让你前进和前进?应该可以连接两个线性反馈移位寄存器 (LFSR) 以向不同方向滚动,不是吗?
或者也许我可以使用某种散列函数来混淆索引号?我要先试试。
还有其他想法吗?