快速和实用的测试,看看一个字符串是否是随机的

本文关键字:一个 字符串 随机 是否是 测试 | 更新日期: 2023-09-27 17:53:19

我需要了解字符串是否足够随机。有人能给我指个方向吗?

的背景

我需要模拟进程行为,其中进程将自己复制到临时位置,将自己重命名为随机名称,并执行自己。我的最终目标是探测到这种活动。作为这项工作的一部分,我需要测试一个进程名,这是一个字符串,随机性。我知道柯尔莫哥洛夫复杂性处理这个问题,但它是不可计算的。什么是快速替代方案:熵的变化,伦佩尔-齐夫压缩级别?

我在找什么

string s1 = "test process name"
string s2 = "hgoi4dFh3e905jv"
double sensitivity = 0.5; // user-defined variable, a subjective threshold of randomness
bool b1 = SeemsRandom(s1, sensitivity);  // false
bool b2 = SeemsRandom(s2, sensitivity);  // true
bool SeemsRandom(string input, double sensitivity)
{
    ...
}

快速和实用的测试,看看一个字符串是否是随机的

您可以尝试将字符串转换为二进制序列,并尝试使用Wald-Wolfowitz运行测试,该测试应该比Kolmogorov-Smirnov测试更简单

http://en.wikipedia.org/wiki/Wald%E2%80%93Wolfowitz_runs_test