我正在尝试将此PDF的第68页集成到MATLAB代码中:
http://csrc.nist.gov/publications/drafts/800-90/draft-sp800-90b.pdf#page=68
我已将这些说明作为图像包含在此处:
由于我对Markov链条一无所知或很少知道,我首先对指示o i 是什么的指令感到困惑。 " o i 表示样本"中状态 i 的次数。什么是州我?
步骤4可能是其中最困难的一步。我不知道如何计算S或类似的东西。
这是我的开始代码:
function minEntropy = markovTest(points, bitSize)
if bitSize > 6
err('Maximum of 6 bits are allowed for Markov test, re-map inputs as in 7.2')
end
k = 128;
alpha = 0.05;
alpha = min(alpha^(bitSize^2),alpha^k);
% Estimate the initial state probability distribution:
e = sqrt(log(1./(1-alpha))./(2*N));
N = length(points);
oi == ?
Pi = min(1, oi./N + e);
??? Hat to do next?
end
答案 0 :(得分:0)
NIST已将所有这些测试集成到一个漂亮的Python库中,该库可以在GitHub上找到。如果由于某种原因图书馆已经消失,您可以尝试联系NIST的Tim Hall,他也将此库移植到C代码,如果这样更适合您。 tim.hall@NIST.gov