伪随机二进制序列预测

时间:2010-06-23 01:09:01

标签: random binary sequence prediction

给定有限值的伪随机二进制序列(例如:00101010010101),预测序列将如何继续。有人可以告诉我最简单的方法吗?或者如果对于那些几乎不能在电脑上玩纸牌游戏的人来说太难了,有人可以告诉我在哪里可以迈出第一步...... PS:这项技术可以用来预测下一个电子轮盘号码的颜色(例如:分别将10分配给红色和黑色)?

6 个答案:

答案 0 :(得分:3)

密码安全伪随机数生成器专门用于实现您想要做的事情。特别是,它们满足“下一位测试”:给定k位输出,您无法猜测位k+1的概率大于1/2

不满足下一位测试的普通伪随机数生成器可能会受到攻击,实际上由于选择了PRNG,在现实世界系统中发现了安全漏洞。特别地,已知线性同余生成器在某种程度上(或完全)可预测,并且某些版本的Unix随机可以使用该算法。这种方法虽然是数学密集型的。如果你想沿着这条路走下去,那么搜索“线性同余发生器预测”就是一个可以开始的地方。

如果您了解PRNG实施,则另一次攻击是尝试确定用于生成您正在分析的序列的种子。种子有时基于可猜测的信息,如时间,进程ID等。

答案 1 :(得分:1)

首先回答PS:不,因为轮盘赌旋转是独立的事件,所以在历史的结果序列中没有任何预测。

一般问题是艰难而有趣的。 该网站可以从其初始值推断出惊人数量的序列:

http://www.research.att.com/~njas/sequences/

请注意,它适用于任意整数序列。

我在像{0,0,1,1,0,0,1,1,...}之类的简单模式上尝试过,它说的是正确的。

答案 2 :(得分:1)

那么,对于伪随机序列,唯一的可能性是保持计算每种可能性之前有多少。如果1s超过0,则下一个更有可能是0。更可能取决于每个的相对出现次数。

请注意,这不适用于真正的随机性,因为事件是独立的,尽管统计学家告诉你: - )

当你使用双重损失的轮盘赌方法时,第一次在牌桌上获得13次红色时,你会发现(痛苦地)。在任何情况下,房子的优势都来自0(在某些桌子上是双0),既不是红色也不是黑色。

答案 3 :(得分:1)

这是一个不错的问题,但我认为如果“你几乎不能玩单人纸牌”,那么现在可能无法实现。

你应该考虑选择一种基本语言,而且大多数人都会说PHP,但我很谨慎地向初学者推荐(虽然很容易上手,但是看看:XAMPP)。 Java可能是一种“易于运行和工作”的语言,但我确信这里有更好的线程可以开始使用哪种语言(Python或其他东西可能因为有经验的程序员喜欢它而获胜)。 / p>

顺便说一下,你的英语很好(我没注意到你是非母语的英语人士)。

现在,至于你的问题,如果你正在寻找真正的模式匹配。我倾向于将这个想法转换为代码:

 "CURRENTPOINT" is end of first letter.
 LOOP: Pick letter(s) from Start to "CURRENTPOINT"
 Break the rest of your binary string into blocks of the same size.
 See if these blocks all equal your picked letters.
 If not, move "CURRENTPOINT" along and repeat the LOOP until you run out of letters.
 If so, you have your "repeating section."

如果您只是猜测随机发生器是暂时偏置的,并且该偏差将在合理的短期内重新建立基线(平衡0和1),那么您可以比较每个0和1的计数并说另一个更可能是基于与基线的偏差。但是,请注意Monte Carlo fallacy

答案 4 :(得分:0)

我注意到没有人告诉你周期性。

伪随机序列始终适用于数学运算。 (直到量子计算机^^)

生成一个的通常方法是划分两个素数(不确定它是正确的词,但无论如何)。

例如

1/3=1.333333.....
9/7=1,2857142857142857142857142857143

这些数字相当少,我们注意到了什么?周期性。

1/3=1.3 3 3 3 3 3.....
9/7=1,2857 142857 142857 142857 142857 143

素数越大,在这种情况下序列越多:3和142857会很大

因此,如果您长时间查看伪随机序列,您可能会发现周期性并能够“猜测”下一个数字。但这可能需要一段时间。

PS:对不起我的英语,我有点生疏了^^

答案 5 :(得分:0)

您需要考虑的是随机性,研究它们。例如,"随机性以串联的方式运行"。将随机序列与可预测序列进行比较:您通常不会在可预测序列中找到串联。利用束等待一堆。运气不错,你会赢。