Python 量化随机性

Python 量化随机性,python,random,Python,Random,我想出了两种方法来生成相对较短的随机字符串——一种更快更简单,另一种更慢,但我认为更随机。有没有一种不是超级复杂的方法或方法来衡量每种方法的数据的随机性 我尝试过压缩输出字符串(通过zlib),计算出数据越随机,压缩的越少,但事实证明这并不多。您使用标准压缩作为不可计算的代理,这是量化随机性的“正确”数学框架(但不幸的是,不可计算) 如果您愿意对字符串进行某种分布,您还可以尝试一些度量。您可以使用一些映射将字符串转换为数字,然后应用标准测试,如Diehard和TestU01。请注意,需要很长的样

我想出了两种方法来生成相对较短的随机字符串——一种更快更简单,另一种更慢,但我认为更随机。有没有一种不是超级复杂的方法或方法来衡量每种方法的数据的随机性


我尝试过压缩输出字符串(通过zlib),计算出数据越随机,压缩的越少,但事实证明这并不多。

您使用标准压缩作为不可计算的代理,这是量化随机性的“正确”数学框架(但不幸的是,不可计算)


如果您愿意对字符串进行某种分布,您还可以尝试一些度量。

您可以使用一些映射将字符串转换为数字,然后应用标准测试,如
Diehard
TestU01
。请注意,需要很长的样本序列(通常只有很少的MB文件)

如果无法提前确定预测结果,则认为结果是随机的。如果可以确定地预测,则认为它是确定的。这是一个二元分类,结果要么是确定性的,要么是随机的,没有随机性。然而,有一定程度的可预测性。正如EMS所提到的,可预测性的一个度量是熵

考虑两个游戏。在任何一场比赛中,你都不知道你会赢还是会输。在游戏1中,获胜的概率是1/2,也就是说,从长远来看,你赢了大约一半的时间。在第二场比赛中,获胜的几率是1/100。这两个游戏都被认为是随机的,因为结果并不是绝对确定的。第一场比赛的熵比第二场比赛大,因为结果不太可预测——虽然有获胜的机会,但你很确定你会在任何一次比赛中失败

一个值序列可以实现的压缩量(通过一个好的压缩算法)与序列的熵有关。英语的熵很低(在字母的相对频率和以组的形式出现的单词序列中都有大量冗余信息),因此往往压缩得很好。

如果你问的是这类信息,那么有一些测量方法。随机性(一个常识)是该方法的一个特性,而不是它的产出。因此,如果你描述这两种方法,你会得到更多有用的反馈。