Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.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_Compression_Information Theory - Fatal编程技术网

Algorithm 评分算法';感知随机性';功能不同

Algorithm 评分算法';感知随机性';功能不同,algorithm,compression,information-theory,Algorithm,Compression,Information Theory,我有一些函数,它们将英文字母表中的小写字母作为输入,并返回True或False 有2^26个这样的可能功能。以下是一些函数及其26位表示: 0000000000000000000 1(仅限z) 01010101010101010110101010101(仅限偶数字母) 100000000000000000000000(仅限a) 10000010000100000(仅限元音) 10000000000000100(仅a、h、x) 我想做的是对这些函数的随机性进行评分,也就是说,它们在人类看来有多随意

我有一些函数,它们将英文字母表中的小写字母作为输入,并返回True或False

有2^26个这样的可能功能。以下是一些函数及其26位表示:

0000000000000000000 1(仅限z) 01010101010101010110101010101(仅限偶数字母) 100000000000000000000000(仅限a) 10000010000100000(仅限元音) 10000000000000100(仅a、h、x)

我想做的是对这些函数的随机性进行评分,也就是说,它们在人类看来有多随意?这似乎是一种模式,还是我只是随机挑选了一些字母

我认为分数可能是基于量化向其他人描述模式所需的最小信息,或者压缩时模式字符串的大小


有没有适合这种情况的算法?它是否能包含人类可能事先也知道的额外信息,例如,“aeiou”属于“元音”类,“gjpqy”属于“低挂”类,“bdfhijklt”属于“高”类?

你无法用一个样本来确定一个过程的随机性。这部xkcd漫画很好地说明了这一点:

事实上,我们的宇宙本身可能不太可能,但它只发生一次

“感知随机性”是一个非常模糊的概念。你需要对人类和你的琴弦进行试验,看看他们认为什么是“随机的”,什么不是,然后尝试构建一个模型


您可以使用诸如运行长度编码和面向位的LZ77类型的压缩来检测重复的字符串,但无论您设计的是何种描述语言,压缩一个刚开始只有26位长的字符串都会很困难。特别是如果你试图包括身高、元音等。因此,Kolomogorov复杂性将不是人类“感知随机性”的良好模型。

如前所述,26位是一个非常短的数据集,但一个合适的度量方法是计算“运行长度”,例如:

  • 01010101010101010101010101
    :所有运行长度均为1
  • 10000000000000100
    :运行长度1出现三次,6出现一次,15出现一次,2出现一次
您可以通过模拟创建“典型”运行长度的柱状图(或从某处查找),并将其与这些柱状图进行比较

通过像这样附加所有的旋转来“膨胀”这些字符串可能是值得的(我使用了一个更大的字母表,这样更清楚):
ABCD
将变成
ABCD-BCDA-CDAB-DABC
,不包括破折号。当字符串结束时,从中可以获得更多的统计信息和更少的边界效果



编辑:对于长字符串,平均运行长度为
n
的概率应该是
O(2^-n)
,但通过模拟来估计这些概率仍然是最容易的。

如果您有时间研究细节,您可以了解Kolmogorov复杂性:量化感知的随机性是相当困难的。你可能会对它感兴趣。搜索“感知随机性”会返回许多有趣的结果。在你尝试给你的序列分配一个“感知的随机性”值之前,你可能想了解人们是如何感知随机性的。我认为这实际上是一个心理学问题,而不是编程问题。如果人们看到的是字母而不是二进制,那么它也涉及语言学。我只能设想在大量的人身上进行试验才能取得结果;描述这种模式有多么困难,这确实是一个很好的测试。我用小提琴实现了这个想法。酷!我从来没有熟悉过R,但是这个可视化帮助我们看看我们是否同意算法的排名。