问题标签 [murmurhash]

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.

0 投票
0 回答
326 浏览

python - C ++ std:python中的哈希

我想在 python 中使用与 C++ std::hash 相同的哈希。

我发现 std::hash 使用 murmurhash 并且我还发现了几个具有该哈希算法的 python 库,但不返回与 std::hash 相同的值。

我正在寻找一个返回相同哈希的python库或std::hash中使用的种子。

0 投票
1 回答
473 浏览

javascript - MurmurHash3_32 Java 返回负数

我正在尝试复制 Android 应用程序 MobileSheetsPro 的文件哈希,其中有一个 hashcodes.txt,其中包含每个文件的哈希,以及路径、上次修改日期和文件大小。我们将只关注散列部分。

因此,对于我在这里上传的随机歌曲,如果您想自己尝试一下,我正在使用murmurhash-nativenpm 包将其转换为缓冲区,然后像这样散列它:

这会打印出4275668817使用默认种子 0 以及3020822739使用种子0xc58f1a7b作为第二个参数时的哈希值。

问题:该应用程序似乎以不同的方式计算它。开发人员编写了以下内容,但我在他链接的代码中没有看到确切的功能:

看看这个:github链接

这些是我使用过的课程。我调用 Hashing.goodFast32Hash(HASH_KEY)) 其中 HASH_KEY 等于 0xC58F1A7B。

编辑我从开发人员那里得到了更多信息:

我打电话给 Files.hash(file, Hashing.goodFast32Hash(HASH_KEY)); 使用其中的返回值,我在返回的 HashCode 对象上调用“asInt()”。所以它是一个有符号整数值(负值就可以了)。是的,HASH_KEY 是传递给函数的种子值。

由于我不擅长 Java,我仍然不知道在 node-js 中复制它......

这就是我掌握的所有信息,伙计们。任何人都看到我要去哪里错了吗?

0 投票
1 回答
63 浏览

python - 我们是否需要考虑 python 平台位或 Linux 平台位来找到合适的 pyhash - murmur3_x**_128 函数?

我想pyhash在我的程序中使用 murmur3 128 位算法。
它有 2 个不同的变体,即murmur3_x64_128murmur3_x86_128.
是指python平台还是Unix平台?

例如用法:(两者都在我的系统上工作,但我的 python 和 Linux 都是 64 位的。)

0 投票
0 回答
284 浏览

c - 如何有效地对字符串使用 murmurhash 函数

我必须在 C 中为我的代码使用散列函数,并且我发现了我认为的 murmurhash 3(32 位)散列函数。

  1. 我无法理解输入 len 和 seed 的内容。

  2. 我在 len 和 seed 中输入了任意值作为参数,它们分别为 2,000 和 2,但我得到了非常长的数字,例如 -1837466777 或 5738837646(不准确,但在结构上与我得到的结果相似)。我还看到了一些关于对其进行位掩码等的内容。

关于第一个问题,我的问题是以简单的方式解释 len 和 seed。

我关于第二个的问题是我想知道如何处理该值(如果它是有效的返回值)以获得可用于我的哈希表的实际键

请让你的解释尽可能简单和分解。对于我无法理解复杂的数学组合和高级定理,我深表歉意,我只需要一个实用的答案,以便我可以立即使用它,然后再研究它周围的复杂性。

非常感谢你,我真的很感激任何帮助。

下面是代码:

0 投票
0 回答
24 浏览

random - 散列质量在位上不是恒定的

我正在尝试从 32 位输入中导出伪随机 32 位值。

为此,我使用了这个杂音哈希:

令我惊讶的是,与高 16 位相比,低 16 位的随机性质量存在很大差异。

如果我使用最低 16 位生成随机单位向量,我会在球体上得到清晰的图案,极点和子午线可见。

在此处输入图像描述

如果我使用最高 16 位生成随机单位向量,我会得到更好的点分布。

在此处输入图像描述

这是 MURMUR 的一个基本问题,还是我用错了?

我提供给它的关键是值 [0,1,.. N] 乘以大素数 2521008887。

对于 3D 矢量的 x/y/z 坐标,我使用随机选择的种子 0xb7295179、0x18732214、0x9531f133。

0xffff0000 位的随机性直观地检查出来。0x0000ffff 位的随机性不会。

0 投票
1 回答
210 浏览

hash - 如何使用 MurmurHash3 32 位生成任意长度的哈希

我目前正在尝试使用 MurmurHash3 散列一组字符串,因为 32 位散列似乎对我来说太大而无法处理。我想将用于生成哈希的位数减少到 24 位左右。我已经发现了一些问题,解释了如何使用 XOR 折叠将其减少到 16、8、4、2 位,但对于我的应用程序来说,这些位太少了。

有人可以帮助我吗?

0 投票
1 回答
374 浏览

python - 如何使用 murmurhash3 散列整数和字符串输入

我正在寻找字符串和整数输入的哈希值。使用 murmurhash3,我可以为字符串而不是整数:

返回以下错误:

我可以将它转换为这样的字节:

但是如果输入是字符串,我会收到一条错误消息

如何在将整数转换为字符串的情况下克服这个问题?

0 投票
0 回答
233 浏览

swift - 有没有办法在 Swift 中的多次执行中生成相同的哈希?

Apple 的Hasher 文档告诉 Hasher 在每次执行时生成不同的哈希值,并且哈希不应该在多次执行中持续存在。

不要在程序的执行过程中保存或以其他方式重用哈希值。Hasher 通常是随机播种的,这意味着它会在程序的每次新执行时返回不同的值。Hasher 实现的哈希算法本身可能会在标准库的任意两个版本之间发生变化。

但是,我确实需要一种方法来生成可跨多个会话重现的哈希。我正在尝试使用哈希值来区分可哈希结构的标签。由于输入数据可能来自不同的执行,如果我使用Hasherand ,哈希将不匹配Hashable

我考虑过编写杂音散列算法的实现,但这些通常适用于字符串值,而不是可选结构。

在 Swift 中是否有替代 Hasher 的方法,我可以使用它来获得具有任意结构的可重现哈希?是否有接受起始种子的散列函数?

谢谢您的帮助!

0 投票
0 回答
54 浏览

hash - 将 32 位均匀分布转换为任何 int 上的均匀分布

给定一个离散均匀分布D~U([0:2^N-1],一个样本从中产生一个整数范围 [ 0, 2^N-1] 中的整数N,我需要一个函数convert,这样对于一个样本d~Dconvert(d, m)将有一个整数均匀包含分布Dc~U([0:m])


想法:

  • 如果分布是连续的,这很容易。只需截断数字的无限表示,就可以保持一致性。
  • 我想不出一种方法来为所有数字做到这一点并保持一致性。
  • 我可以针对平局条件重新滚动,但无法制定算法。

我最终想要的是自定义范围 ( ) 上的杂音散列m,而不是精确的 32 位数字。

0 投票
0 回答
86 浏览

hash - murmur3f 和 xxhash 不同变体的质量

https://github.com/rurban/smhasher/看来,murmur3f 和 xxhash 函数(xxh3 除外)具有相同的质量,因为这两个函数在不同的工作负载中返回“统一”的结果。

关于不同现实世界工作负载的一致性,还有其他结果吗?(我们假设它不是来自攻击者的“deliveret”)。