问题标签 [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.
python - C ++ std:python中的哈希
我想在 python 中使用与 C++ std::hash 相同的哈希。
我发现 std::hash 使用 murmurhash 并且我还发现了几个具有该哈希算法的 python 库,但不返回与 std::hash 相同的值。
我正在寻找一个返回相同哈希的python库或std::hash中使用的种子。
javascript - MurmurHash3_32 Java 返回负数
我正在尝试复制 Android 应用程序 MobileSheetsPro 的文件哈希,其中有一个 hashcodes.txt,其中包含每个文件的哈希,以及路径、上次修改日期和文件大小。我们将只关注散列部分。
因此,对于我在这里上传的随机歌曲,如果您想自己尝试一下,我正在使用murmurhash-native
npm 包将其转换为缓冲区,然后像这样散列它:
这会打印出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 中复制它......
这就是我掌握的所有信息,伙计们。任何人都看到我要去哪里错了吗?
python - 我们是否需要考虑 python 平台位或 Linux 平台位来找到合适的 pyhash - murmur3_x**_128 函数?
我想pyhash
在我的程序中使用 murmur3 128 位算法。
它有 2 个不同的变体,即murmur3_x64_128
和murmur3_x86_128
.
是指python平台还是Unix平台?
例如用法:(两者都在我的系统上工作,但我的 python 和 Linux 都是 64 位的。)
c - 如何有效地对字符串使用 murmurhash 函数
我必须在 C 中为我的代码使用散列函数,并且我发现了我认为的 murmurhash 3(32 位)散列函数。
我无法理解输入 len 和 seed 的内容。
我在 len 和 seed 中输入了任意值作为参数,它们分别为 2,000 和 2,但我得到了非常长的数字,例如 -1837466777 或 5738837646(不准确,但在结构上与我得到的结果相似)。我还看到了一些关于对其进行位掩码等的内容。
关于第一个问题,我的问题是以简单的方式解释 len 和 seed。
我关于第二个的问题是我想知道如何处理该值(如果它是有效的返回值)以获得可用于我的哈希表的实际键
请让你的解释尽可能简单和分解。对于我无法理解复杂的数学组合和高级定理,我深表歉意,我只需要一个实用的答案,以便我可以立即使用它,然后再研究它周围的复杂性。
非常感谢你,我真的很感激任何帮助。
下面是代码:
random - 散列质量在位上不是恒定的
我正在尝试从 32 位输入中导出伪随机 32 位值。
为此,我使用了这个杂音哈希:
令我惊讶的是,与高 16 位相比,低 16 位的随机性质量存在很大差异。
如果我使用最低 16 位生成随机单位向量,我会在球体上得到清晰的图案,极点和子午线可见。
如果我使用最高 16 位生成随机单位向量,我会得到更好的点分布。
这是 MURMUR 的一个基本问题,还是我用错了?
我提供给它的关键是值 [0,1,.. N] 乘以大素数 2521008887。
对于 3D 矢量的 x/y/z 坐标,我使用随机选择的种子 0xb7295179、0x18732214、0x9531f133。
0xffff0000 位的随机性直观地检查出来。0x0000ffff 位的随机性不会。
hash - 如何使用 MurmurHash3 32 位生成任意长度的哈希
我目前正在尝试使用 MurmurHash3 散列一组字符串,因为 32 位散列似乎对我来说太大而无法处理。我想将用于生成哈希的位数减少到 24 位左右。我已经发现了一些问题,解释了如何使用 XOR 折叠将其减少到 16、8、4、2 位,但对于我的应用程序来说,这些位太少了。
有人可以帮助我吗?
python - 如何使用 murmurhash3 散列整数和字符串输入
我正在寻找字符串和整数输入的哈希值。使用 murmurhash3,我可以为字符串而不是整数:
返回以下错误:
我可以将它转换为这样的字节:
但是如果输入是字符串,我会收到一条错误消息
如何在不将整数转换为字符串的情况下克服这个问题?
swift - 有没有办法在 Swift 中的多次执行中生成相同的哈希?
Apple 的Hasher 文档告诉 Hasher 在每次执行时生成不同的哈希值,并且哈希不应该在多次执行中持续存在。
不要在程序的执行过程中保存或以其他方式重用哈希值。Hasher 通常是随机播种的,这意味着它会在程序的每次新执行时返回不同的值。Hasher 实现的哈希算法本身可能会在标准库的任意两个版本之间发生变化。
但是,我确实需要一种方法来生成可跨多个会话重现的哈希。我正在尝试使用哈希值来区分可哈希结构的标签。由于输入数据可能来自不同的执行,如果我使用Hasher
and ,哈希将不匹配Hashable
。
我考虑过编写杂音散列算法的实现,但这些通常适用于字符串值,而不是可选结构。
在 Swift 中是否有替代 Hasher 的方法,我可以使用它来获得具有任意结构的可重现哈希?是否有接受起始种子的散列函数?
谢谢您的帮助!
hash - 将 32 位均匀分布转换为任何 int 上的均匀分布
给定一个离散均匀分布D~U([0:2^N-1]
,一个样本从中产生一个整数范围 [ 0
, 2^N-1
] 中的整数N
,我需要一个函数convert
,这样对于一个样本d~D
,convert(d, m)
将有一个整数均匀包含分布Dc~U([0:m])
。
想法:
- 如果分布是连续的,这很容易。只需截断数字的无限表示,就可以保持一致性。
- 我想不出一种方法来为所有数字做到这一点并保持一致性。
- 我可以针对平局条件重新滚动,但无法制定算法。
我最终想要的是自定义范围 ( ) 上的杂音散列m
,而不是精确的 32 位数字。
hash - murmur3f 和 xxhash 不同变体的质量
从https://github.com/rurban/smhasher/看来,murmur3f 和 xxhash 函数(xxh3 除外)具有相同的质量,因为这两个函数在不同的工作负载中返回“统一”的结果。
关于不同现实世界工作负载的一致性,还有其他结果吗?(我们假设它不是来自攻击者的“deliveret”)。