问题标签 [hash-function]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Java 最快的哈希函数
我有一个长度为 128 个字符的布尔字符串(如“01100..001”)(表示 0/1 的 128 个数字)。我在 Java 中寻找一个高效(快速)的散列函数,它产生的表示比 128 位低得多,而且显然冲突更少。任何人都可以帮助我,有没有这样的哈希函数?有什么建议吗?
hash - 相似哈希函数(simhash)
我在使用哈希函数时遇到问题。我必须为文档中的每个单词分配一些数字(128 位或 64 位)。因此,“相似度”的哈希值必须与“相似度”相近。这意味着,如果相似度的值=>10022(比如说),那么相似度=>10025。这应该与相似的词接近。不同名称的哈希值也应该相似。这意味着,“john”的哈希值也应该接近“michel”或“sita”......等等。如果任何人对此有任何想法。
先谢谢了。:)
java - 如何在 Java 中实现哈希函数 `h(k) = (A·k mod 2^w) >> (w – r)`
重要的提醒:
这不是一个供人们向我发表他们对哈希的看法的讨论帖。我只需要知道如何使给定的函数在 java 中工作——最好有一个例子。
问题:
为了在即将到来的面试中磨练我对哈希函数的理解,我观看了麻省理工学院计算机科学教授的两场免费讲座 (http://videolectures.net/mit6046jf05_leiserson_lec08/)。所以讲座结束后,我尝试在java中实现以下哈希函数。
我认为这在java中很容易实现。但是当我在 w=32 处执行 2^w 时,我在 Java 中得到不准确的结果。在现实生活中2^32 = 4294967296
但不是在 java 中,它会将结果截断为2^31 - 1
or 2147483647
。
有谁知道如何解决这个问题以便在 Java 中实现该功能?
编辑:
我看到很多回复都集中在 32 上。如果我的电脑是 64 位的怎么办?w = 32
因为我使用的是 Java ,所以我被设置困住了?
django - 复合主键,谷歌应用引擎(django)
我在谷歌应用引擎上使用 django nonrel/djangoappengine。不能直接指定复合主键。但是,应该可以模仿这种行为。我想知道什么是最好的方法。
问题
考虑以下数据模型
我希望 (salesman, year) 被视为主键。也就是说,如果我这样做
“表” AccumulatedSales 应包含一行。所以第二次保存会覆盖第一次。
可能的解决方案
问题
- 这种方法是好的还是“正确的”?
- 字段键的最佳数据类型是什么?就我个人而言,我希望有 som 128 位字段,但据我所知,这是不可用的。
math - MASH-2 哈希函数
我们在一门大学课程中学习了 MASH-2 哈希函数,在考试中我们遇到了仅使用科学计算器计算类似 ((62500)^257)) mod (238194151) 的问题。现在我知道一些关于 a^b (mod n) 的理论,但我上面提出的问题甚至很难手动计算。我认为解决这个问题大约需要 15 分钟。我想知道是否有更快的方法来做到这一点。或者即使有某种方法可以以二进制形式进行(将数字转换为二进制,然后进行一些操作)。我需要能够用科学计算器手动完成。
java - 可扩展类的哈希码(面向未来)
由于我在数学方面没有任何出色的技能,所以我问你是否有任何算法可以用于将来可能会改变的课程。
考虑以下场景:
“角色”类具有以下字段:
几周后,我决定添加一个角色“guest”:
几周后,我决定删除“打印机”这个角色;
由于我会将哈希码保存在数据库中,因此我必须 100% 确定此类的所有版本都会生成唯一的哈希码。
也许这不是问题,我一直使用 Eclispe IDE 源代码生成器中提供的那个。
你能告诉我我是否安全地使用 Eclipse IDE (Indigo) Java 版本 >= 6 方法,或者给我一些关于这个主题的其他建议。我相信这是一件非常普遍的事情。
提前致谢
java - 变量名与哈希函数有什么关系?
来自 MIT recitation的良好散列函数的属性:
- (大约)满足简单统一散列的假设:每个键都有可能散列到 m 个槽中的任何一个。
- 散列函数不应该偏向于特定的槽不会将相似的键散列到同一个槽(例如编译器的符号表不应该将变量 i 和 j 散列到同一个槽,因为它们经常结合使用)
- 计算速度很快,应该有 O(1) 运行时间
- 是确定性的。对于给定的 k,h(k) 应该始终返回相同的值
有人可以进一步解释第 2 点。变量名与散列函数有什么关系?
编辑:我使用 Java。因此,如果答案包含使用 java 语义的解释,那对我来说没问题。
scala - 生成 k 对独立的散列函数
我正在尝试在 Scala 中实现Count-Min Sketch算法,因此我需要生成 k 成对独立哈希函数。
这是一个比我以前编程过的任何东西都低的级别,而且我对哈希函数了解不多,除了算法类,所以我的问题是:我如何生成这些 k 成对独立的哈希函数?
我应该使用像 MD5 或 MurmurHash 这样的哈希函数吗?我是否只生成 k 形式的散列函数f(x) = ax + b (mod p)
,其中 p 是素数,a 和 b 是随机整数?(即,每个人都在算法 101 中学习的通用散列系列)
我正在寻找比原始速度更简单的东西(例如,如果实现起来更简单,我会慢 5 倍)。
c++ - 字典(hash_table)中使用了什么哈希函数?
我正在写语言的解释器。有问题:我想创建类型字典,您可以在其中按索引放置任何类型的值,任何类型的值(简单类型的简单 [int,float,string] 或复杂 [list,array,dictionary] 或复杂的简单类型...)。这与 python-lang 中的相同。我应该使用什么哈希函数算法?
对于字符串,有许多哈希示例 - 最简单的:所有字符的总和乘以 31,除以 HASH_SIZE,即那个简单的数字。
但是对于不同的类型,我认为,它必须是更复杂的算法。我找到了 SHA256,但不知道如何使用“unsigned char [32]”结果类型在哈希表中进行寻址 - 它比计算机中的 RAM 多得多。谢谢你。
c++ - 对于 unordered_map,对于具有 3 个无符号字符和一个 int 的结构,什么是好的散列函数?
我只想使用我的结构作为键的 unordered_map,因为我不需要任何排序..但我无法找到自己拥有所有这些哈希的东西..
作为一个相关的问题..当人们比较无序和有序映射时,他们从不谈论哈希函数,那怎么可能?一个糟糕的哈希函数不能让无序映射比映射慢吗?(仅由于散列函数)
}
-edit- a,b,c 只能有值 'a', 'b', 'c' 或 'd', n 在 3 到 60 之间变化。