如何检测数字序列是由人类随机行为生成的还是由伪随机生成器生成的



我有一个用户按钮触摸序列,记录用户按下该按钮和抬起之间的滴答声。如0.111,0.23,0.45,0.12记录用户触摸按钮4次,第一次触摸持续0.111s。

有些用户是真实的人类,另一些则是机器人。机器人通过伪随机生成器触摸按钮,可能实现为web.button.touch(random.uniform(0, 1))

那么,如何检测一个数字序列是由人类随机行为生成的还是由伪随机生成器生成的呢?

对于任何有意义的统计测试,您都需要有足够的数据。你不能根据10次击键来决定任何事情。但如果你有成千上万的人,你可以开始做一些事情。

在您的例子中,如果您有一些由数字生成器生成的值的均匀分布,那么您的直方图也会显示这种分布。

我认为(但不要相信我的话,自己做实验(人类打字会给出某种正态分布。因此,人类与非人类之间的区别将是基于一组足够的数据来区分这两种分布的能力。

编辑:

正如@Sam Mason所提到的,机器人只需要知道绕过这一措施的诀窍。所以这个功能可以阻止你的小妹妹,但不能阻止真正的黑客。

相关内容

最新更新