0
我做了一個簡單的哈希函數(如果它可以被稱爲一個),將字符串轉換爲雙精度。如何計算這個散列函數的衝突?
它的工作原理,採取的第一個字符的價值和鑄造它的兩倍,那麼下個字符的餘弦值相乘,再與下一個字符的餘弦值相乘,等等...
這是功能:
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,或類似的東西)。