【发布时间】:2014-02-28 13:30:08
【问题描述】:
我做了一个简单的散列函数(如果它可以被称为一个),它将一个字符串转换为一个双精度。
它的工作原理是取第一个字符的值并将其转换为 double,然后乘以下一个字符的余弦,然后乘以下一个字符的余弦,依此类推......
这是函数:
double hash (string str) {
double hash = (double)str[0];
for (int i = 1; i < str.length(); i++) {
hash *= cos((double)str[i]);
}
return hash;
}
那么我该如何计算这个函数中的碰撞概率呢?
我找到了一个公式,它是 1 - e^(k(k-1)/(2k)),但从我读到的内容,它只有在散列函数是一个好的函数时才有效(它均匀地分布散列值,比如一个好的 RNG,或者类似的东西)。
【问题讨论】:
标签: hash hash-collision