Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 从一系列随机数预测非随机数_Algorithm_Random_Fraud Prevention - Fatal编程技术网

Algorithm 从一系列随机数预测非随机数

Algorithm 从一系列随机数预测非随机数,algorithm,random,fraud-prevention,Algorithm,Random,Fraud Prevention,我得到了以下有趣的任务: 给出一个包含100万个16位数字的数字(比如信用卡号码)的列表,其中包括99万个由计算机系统生成的纯随机数字,以及1万个由欺诈者手动创建的数字。这些数字被标注为真实或欺诈。建立一个预测非随机数的算法 到目前为止,我的方法是一种蛮力:查看非随机数以找到模式(例如重复数:22222或01234) 我想知道是否有一个现成的算法或工具来完成这类任务。我认为这个任务在欺诈分析社区中应该很常见 谢谢。首先,如果您知道它们是信用卡号,请使用Luhn算法,这是一种有效信用卡号的快速校验

我得到了以下有趣的任务:

给出一个包含100万个16位数字的数字(比如信用卡号码)的列表,其中包括99万个由计算机系统生成的纯随机数字,以及1万个由欺诈者手动创建的数字。这些数字被标注为真实或欺诈。建立一个预测非随机数的算法

到目前为止,我的方法是一种蛮力:查看非随机数以找到模式(例如重复数:22222或01234)

我想知道是否有一个现成的算法或工具来完成这类任务。我认为这个任务在欺诈分析社区中应该很常见


谢谢。

首先,如果您知道它们是信用卡号,请使用Luhn算法,这是一种有效信用卡号的快速校验和算法

然而,如果它们只是16位整数,那么有几种方法可以使用。很难判断单个数字是否来自随机源(因为数字1111111111与随机数生成器中的任何其他数字一样可能)。至于重复的数字和模式,这让人想起科尔莫戈罗夫复杂性的概念(见下面的链接)。你可以试着用这种蛮力方法来寻找模式,但我觉得这是非常不准确的,因为人类实际上可能倾向于避免在这些数字中加入数字和序列

相反,我建议关注人们生成数字的方式。你可以把人工输入当作一个非常糟糕的随机数发生器。所以,如果你没有其他数据集,我建议你自己列出一个随机输入的数字。然后,您可以使用机器学习生成分类器算法来区分纯随机数(机器学习算法已识别的那些没有“类人”属性的数字)。就统计分类器的度量而言,Kolmogorov复杂度可能是一个,可能是另一个度量的数字频率(参见维基百科上的Benford定律),以及另一个度量的重复数字数(人类可能会试图避免重复数字,以使其看起来非随机,所以让您的分类器来完成这项工作!)

根据我个人的经验,像这样的难题是机器学习算法和统计分类器的教科书案例

希望这有帮助

链接:




你最好在math.stackexchange.com上提问。好的,通常可以确定整个集合是否是随机生成的,但在随机生成的数字集合中找不到手动生成的数字(如果它们之间没有相关性)。非常感谢schmatz提供的非常有用的参考资料。我将把这个问题保留几天,听取其他专家的意见,但你的回答很好。