我有一些函数将英文字母表中的小写字母作为输入并返回 True 或 False。
这样可能的函数有 2^26 个。以下是一些函数及其 26 位表示:
00000000000000000000000001(仅限 z) 01010101010101010101010101(仅限偶数字母) 10000000000000000000000000(仅一个) 10001000100000100000100000(仅限元音) 10000001000000000000000100(仅限 a、h、x)
我想做的是对这些函数的感知随机性进行评分,即它们对人类来说有多任意?似乎有某种模式,还是我只是随机挑选了一些字母?
我认为分数可能基于量化向其他人描述模式所需的最少信息,或者压缩时模式字符串的大小。
有适合这个的算法吗?它是否可以包含人类可能提前知道的额外信息,例如“aeiou”属于“元音”类,“gjpqy”属于“低悬”类,“bdfhijklt”属于“高”类?
最佳答案
仅用一个样本无法确定过程的随机性。这部 xkcd 漫画很好地说明了这一点:
事实上,我们的宇宙本身可能难以置信,但它只需要发生一次。
“感知随机性”是一个非常模糊的概念。您需要对人类和您的弦进行试验,看看他们认为什么是“随机”的,什么不是,然后尝试构建一个模型。
您可以使用游程编码和面向位的 LZ77 类型压缩等方法来检测重复的字符串,但是无论如何,您将很难压缩一开始只有 26 位长的字符串你设计什么描述语言。特别是如果您尝试包含高度、元音等内容。因此,科洛莫戈洛夫复杂度将不是人类“感知随机性”的良好模型。
关于不同函数的 'perceived randomness'评分算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32607785/