为了账号安全,请及时绑定邮箱和手机立即绑定

可逆伪随机序列发生器

可逆伪随机序列发生器

绝地无双 2019-12-04 09:43:51
我想要某种方法来创建一个相当长的随机数序列,可以前后翻转。就像带有“下一个”和“上一个”按钮的机器一样,这将为您提供随机数。诸如10位分辨率(即,从0到1023的正整数)之类的东西就足够了,并且序列号大于100k。这是一个简单的游戏类型应用程序,不需要加密强度随机性或其他任何东西,但我希望它具有相当的随机性。我的可用内存有限,因此我不能只生成大量随机数据并进行处理。我需要在“互动时间”中获得数字-我可以轻松地花几毫秒来考虑下一个数字,但舒适度远不止于此。最终它将在某种微控制器上运行,可能只是一个Arduino。我可以使用简单的线性同余生成器(LCG)来实现。前进很简单,要前进,我必须缓存最新的数字并间隔存储一些点,以便我可以从那里重新创建序列。但是也许有一些伪随机生成器可以让您向前和向后前进?应该有可能将两个线性反馈移位寄存器(LFSR)连接起来,以朝不同的方向滚动,不是吗?或者,也许我可以使用某种哈希函数来使索引号变乱呢?我将首先尝试。还有其他想法吗?
查看完整描述

3 回答

?
噜噜哒

TA贡献1784条经验 获得超7个赞

只需按递增的整数顺序反转位的顺序即可。例如(8位分辨率):


0 <=> 0

1 <=> 128

2 <=> 64

3 <=> 192

4 <=> 32

等等

在序列中前进和后退非常容易,并且比调用加密或哈希函数要快得多。它还具有产生最长可能序列的好处。


绝对不是加密安全的。这是生成值的散点图(同样具有8位分辨率):


“随机”生成值的散点图


尽管可能足够“随机”,但您可以轻松看到模式。


查看完整回答
反对 回复 2019-12-04
  • 3 回答
  • 0 关注
  • 493 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信