根据观察到的数字序列预测伪随机数。
输入从伪随机数生成器获得的数字序列,例如Java标准伪随机数生成器或Mersenne Twister MT19937。然后,应用程序将尝试预测生成器中的以下数字。
该应用程序希望所有数字输入为0到1之间的整数或浮点数。目前,Mersenne Twister仅支持浮点数。支持三种输入模式:
1. 文本字段可让您直接在设备上输入数字。
2. 文件允许您选择具有换行符分隔数字字符串的文件。
3. 套接字在设备上打开服务器套接字。然后,您可以通过客户端套接字与自定义客户端连接,并将新行分隔的数字字符串发送到服务器。在每个数字之后,服务器将发回下一个换行符分隔的预测。每个预测块由一个额外的换行符分隔。
要测试应用程序,请在文本字段中输入以下数字:
1412437139
1552322984
168467398
1111755060
-928874005
这些数字是从Java线性同余生成器 Random.nextInt()中采样的。因此,应用程序应在第三个数字输入后检测 LCG:Java ,并且预测历史记录中的数字应显示为绿色而不是红色,表示这些数字已正确预测。
这个应用程序的源代码发布在GitLab上。在那里你还可以找到一个用于测试套接字输入的Python程序:https://gitlab.com/asnelt/derandom/blob/HEAD/README.md