计算随机情况下HASH发生碰撞的概率
2011-09-14 16:31
447 查看
// 计算随机情况下HASH碰撞率
// 不碰撞率
// f(N,1) = 1.0;
// f(N,2) = 1.0-1/N;
// f(N,k+1) = f(N,k)*(N-k)/N
// f(N,k) = (N-1)*(N-2)...(N-(k-1))/(N^(k-1))
// 大约算法:
// 根据: 当x接近0的时候, 1+x = e^x
// 设 p = (k*k)/(2.0*N)
// f(N,k) = 1.0/(e^p);
//
// 碰撞率: 1.0 - f(N,k)
// 来自:
// http://hi.baidu.com/%D1%BC%B5%B0%BF%C7%B6%F9/blog/item/92725df68332be2bbd31095d.html
// 经验数据
// 当 k*k = N 的时候, 可近视认为碰撞率为 40%
#include "stdafx.h"
double getRate(long k, long N)
{
if(k > N)
return 1.0;
if(k<=1)
return 0.0;
const double fN = N;
double rate = 1.0;
for (long i = N-1; i > N-k; i--)
{
rate *= i/fN;
}
return 1-rate;
}
int _tmain(int argc, _TCHAR* argv[])
{
double fk1 = getRate(23, 365);
double fk2 = getRate(10000, 0x7FFFFFFF);
double fk3 = getRate(100000, 0x7FFFFFFF);
return 0;
}
相关文章推荐
- 哈希表等概率情况下查找成功和查找不成功的平均查找长度的计算
- Hash中的一些概率计算
- 考试中知道自己的成绩以及其他所有人的成绩,计算在特定情况下自己参加复试的概率。
- 哈希表等概率情况下查找成功和查找不成功的平均查找长度的计算
- 哈希表等概率情况下查找成功和查找不成功的平均查找长度的计算
- 计算随机概率 p 下取 N 个0,1, 出现 M 个 0 的概率
- mysql 查询随机条记录的sql语句和php计算概率
- hdu2049 不容易系列之(4)——考新郎 错排+组合 一共有N对新婚夫妇,N个新娘随机坐成一排,每个新郎只能选一个, 其中有M个新郎找错了新娘,求发生这种情况一共有多少种可能.
- 回溯(穷举)计算碰撞概率
- 哈希表等概率情况下查找成功和查找不成功的平均查找长度的计算
- 获取随机时间,且不同时间段的概率不等的计算方法
- 哈希表计算等概率情况下查找不成功的平均查找长度
- 计算随机抛1000次的骰子各个数字产生的概率。
- 1、请编写函数foo(int x, int y, int n) 计算:随机生成x个大小为[1,y]的正整数,它们的和为n的概率是多少?语言仅限于PHP、C/C++、Java中的一种。
- 哈希表等概率情况下查找成功和查找不成功的平均查找长度的计算
- 蚂蚁碰撞概率计算
- 深度分析游戏中的随机概率
- Java内存泄漏发生的情况
- bt 介绍以及 bt 种子的hash值(特征值)计算
- 多核编程中的线程随机竞争模式的概率分析