C关于哈希表的问题
c questions about hashtable
下面是一些预处理哈希表的代码:
unsigned long cryptTable[0x500];
void StringHash::InitCryptTable()
{
unsigned long seed = 0x00100001, index1 = 0, index2 = 0, i;
for( index1 = 0; index1 < 0x100; index1++ )
{
for( index2 = index1, i = 0; i < 5; i++, index2 += 0x100 )
{
unsigned long temp1, temp2;
seed = (seed * 125 + 3) % 0x2AAAAB;
temp1 = (seed & 0xFFFF) << 0x10;
seed = (seed * 125 + 3) % 0x2AAAAB;
temp2 = (seed & 0xFFFF);
cryptTable[index2] = ( temp1 | temp2 );
}
}
}
是否有人可以告诉我为什么seed = 0x00100001和以下算法,为什么不只是做memset(cryptTable, 0, sizeof(cryptTable)),这样做的好处是什么?
这部分代码有多个方面。首先,您应该大致了解密码学和随机生成器。
- 0x00100001 -和其他 一样好
- 0x2AAAAB=2796203是素数,迭代种子=(种子* 125 + 3)% 0x2AAAAB将为您提供从0到2796202的伪随机数字序列
- 种子,0xFFFF会给你16位伪随机数
相关文章:
- 有没有一种方法可以创建一个带有哈希表的数据库,该哈希表具有恒定时间查找功能
- 如何将这个C++哈希表转换为动态扩展和收缩,而不是使用硬设置的最大值
- 用C++将哈希表写入文件并从文件中恢复
- C++中的并发哈希表
- 在具有开放寻址的哈希表中插入节点 [优化逻辑]
- 与C++哈希表的基础知识混淆
- 调整大小和复制哈希表数组中的元素
- 带链接的基本哈希表
- C++哈希表中,两个相同的实现,但一个给出错误
- 如果索引不是整数,我们如何在 C++ 中插入哈希表
- 查找项目在哈希表中的位置
- 为什么C++ STL 哈希表 (unordered_map) 不接受向量作为键
- 使用rehash的C++哈希表问题
- 生活游戏哈希表 .h 文件模板问题
- 使用输入数较少的哈希表有什么问题
- 在简单的哈希表中解决内存泄漏和语法问题
- C++关于哈希表的问题
- 一些哈希表/unordered_map问题
- 哈希表添加和打印功能问题
- C关于哈希表的问题