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

ole*_*sii 8 c# random

我需要了解字符串是否足够随机.谁能指出我正确的方向?

背景

我需要模拟进程行为,其中进程将自身复制到临时位置,将自身重命名为随机名称,并自行执行.我的最终目标是检测这种活动.作为这项工作的一部分,我需要测试一个进程名称,它是一个字符串,用于随机性.我知道Kolmogorov的复杂性涉及到这一点,但它是无法计算的.什么是快速替代品:各种熵,Lempel-Ziv压缩水平?

我在找什么

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)
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

小智 1

您可能想尝试将字符串转换为二进制序列并尝试使用 Wald-Wolfowitz 运行测试,该测试应该比 Kolmogorov\xe2\x80\x93Smirnov 测试简单

\n\n

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

\n