哈希表大小和键的有效位

2024-01-19

我有一个关于哈希表大小和模块化哈希的问题。我指的哈希算法如下: hash_key % table_size = array_index. 我正在阅读一本算法教科书,其中给出了以下建议:

如果表大小不是素数,则可能会出现键的所有位在确定 array_index 时不起作用的情况。

谁能用一个例子来解释这到底意味着什么?


你要避免的是常见因素。有一个定理指出每个数字都可以表示为素数的乘积。

因此,如果你有一个素数作为 mod。您不会分享该部门的任何因素。

比如说 A % 30,所以 2、3 和 5 的任何倍数都将共享除法中的因数,并且该因数在除法中将毫无用处。

250/30 = 50 / 6 = 25 / 3

你想尽量减少无用的因素。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

哈希表大小和键的有效位 的相关文章

  • rspec - 为什么仅在 ubuntu 上,当它们相同时,使用 assert_equal 进行此属性比较会失败?

    两个测试都失败了 但仅在 Ubuntu 12 上失败 但在我的 新 Mac 上却失败了 失败的两个是 Active Record 对象属性比较 但我尽了最大努力来比较它们 例如在命令行创建哈希并粘贴属性 比较表明它们是相同的 这是一个真正的
  • 为什么“int”和“sbyte”GetHashCode 函数生成不同的值?

    我们有以下代码 int i 1 Console WriteLine i GetHashCode outputs gt 1 这是有道理的 并且 C 中除 sbyte 和 Short 之外的所有整型类型都会发生同样的情况 那是 sbyte i
  • 按月和年将日期的 Ruby 数组分组为哈希

    假设我有一个 Ruby 数组Dates like 2011 01 20 2011 01 23 2011 02 01 2011 02 15 2011 03 21 创建按年和按月对日期元素进行分组的哈希的简单且 Ruby 式的方法是什么 例如
  • Symfony2 创建自己的编码器来存储密码

    我是 Symfony2 的新手 我可能有一个关于在数据库中编码用户密码的简单问题 我想以这种方式编码并存储在数据库中我的用户密码 encoded password salt sha1 salt raw password 我找到了各种编码器
  • 使用未定义常量 CRYPT_SHA512

    我使用一个 php 脚本 该脚本使用 php 的 crypt 并使用 SHA512 对密码进行哈希处理 但是当我尝试检查 SHA512 是否已设置时 出现上述错误 当然我知道为什么我会收到这个错误 php 缺少一些依赖项 我只是不知道这种依
  • 如何从 PHP 字符串中获取 64 位整数哈希值?

    我需要 64 位字符串整数哈希值来实现哈希映射之类的功能 在我看来 没有可以返回 64 位整数的原生 PHP 哈希功能 我认为可以获取 sha1 哈希值的第一部分并将其转换为整数 然而 这不会带来最好的性能 而且转换似乎很棘手 当然 如果不
  • MacOS X 上使用 crypt 进行 Python SHA512 加盐密码

    我正在尝试生成加密的密码字符串 类似于Linux中的 etc shadow 由于某种原因 我得到的输出是不同的 我有什么想法吗 一个比另一个长 不包括盐部分 usr bin python import crypt alg 6 SHA512
  • 为什么数组前需要加星号?

    我不知道这是哈希问题还是数组问题 但我不明白为什么第三个示例中需要星号 才能获得填充数据的哈希 如果没有它 它会输出一个空的哈希值 coding utf 8 require pp pp first name Shane last name
  • 对于范围从 0 到最大值的 uint64_t 键,最佳哈希函数是什么?

    假设我们有一组元素并希望将它们存储在哈希映射中 例如std unordered set 并且每个元素都有一个 type 的键uint64 t其值可以从 0 到最大可能值变化 使用简单哈希函数 其中键的哈希值就是键本身 是最佳选择吗 它是否取
  • 使用哈希检查具有 $_POST 值的页面是否已刷新

    当将表单发布到同一个PHP页面时 正确的方法是什么来查找页面是否被意外刷新而不是再次提交 这是我现在正在使用的 tmp implode POST myHash md5 tmp if isset SESSION myHash SESSION
  • 如何在 C# 中使用 foreach 枚举哈希表

    我试图列举一个Hashtable其定义为 private Hashtable keyPairs new Hashtable foreach SectionPair s in keyPairs if s Section incomingSec
  • Java 中的 ConcurrentHashMap 和 Hashtable [重复]

    这个问题在这里已经有答案了 Java 中的 ConcurrentHashMap 和 Hashtable 有什么区别 哪个对于线程应用程序更有效 ConcurrentHashMap 和 Hashtable 锁定机制 Hashtable属于Co
  • 如何按值降序对哈希进行排序并在 ruby​​ 中输出哈希?

    output sort by k v v reverse 和钥匙 h a gt 1 c gt 3 b gt 2 d gt 4 gt a gt 1 c gt 3 b gt 2 d gt 4 Hash h sort 现在我有这两个 但我试图按值
  • 将 Python 中的 SHA 哈希计算转换为 C#

    有人可以帮我将以下两行 python 代码转换为 C 代码吗 hash hmac new secret data digestmod hashlib sha1 key hash hexdigest 8 如果您有兴趣 其余的看起来像这样 us
  • NodeJS 在目录中递归地哈希文件

    我能够实现目录中的递归文件遍历 即探索目录中的所有子目录和文件 为此我使用了answer https stackoverflow com questions 5827612 node js fs readdir recursive dire
  • JSON 中的哈希到底是什么?

    我正在学习 JSON 但我发现你也可以将所谓的 哈希 放入 JSON 中 我在哪里可以找到什么是哈希 或者你能向我解释一下什么是哈希吗 另外 什么是哈希图 我有 C 和 C 经验 正在学习 JS Jquery 和 JSON 哈希是一个稀疏数
  • PHP - hash_pbkdf2 函数

    我正在尝试使用此 php 函数执行一个函数来哈希密码 http be php net manual en function hash pbkdf2 php http be php net manual en function hash pb
  • 在 Perl 中使用数据引用的正确方法

    我有一组想要处理的数据 为了简化我的代码 最好通过指向原始数据的引用数组来访问我的数据的某些子集 比解释更好的是 我写下了这个例子 它还没有工作 最后 我想更新原始数据 而不必更新所有子集 用 Perl 可以做这样的事情吗 usr bin
  • Java 模 2**64 求逆

    给定一个奇数long x 我在找long y这样他们的乘积模2 64 即 使用正常的溢出算术 等于 1 为了明确我的意思 这可以在几千年内计算出来 for long y 1 y 2 if x y 1 return y 我知道可以使用扩展欧几
  • 哈希上的多次迭代:这不会减少熵吗?

    我看到在很多地方 包括堆栈 都推荐了这种技术 而且我无法摆脱这种技术会减少熵 毕竟 您正在再次对已经被散列过并且有碰撞机会的东西进行散列 碰撞机会大于碰撞机会会不会导致更多的碰撞机会 经过研究 似乎我错了 但为什么呢 既然您标记了 md5

随机推荐