我有一个问题,几天来我一直在尝试用 C++ 计算密码的熵。 代码如下,但由于某种原因我无法正确计算。
有人可以帮助我吗?
你的代码对我来说看起来是正确的。我写得有点不同:
double entropy(std::string const &in) {
std::map<char, double> frequencies;
for (auto const &c : in)
++frequencies[c];
double e = 0.0;
for (auto const &p : frequencies) {
double f = p.second / in.length();
e += f * std::log2(f);
}
return -e;
}
...但在我看来,它们应该总是产生相同的结果(并且我已经验证我的结果与世界其他地方的各种测试字符串一致)。