问题标签 [hash-collision]

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 投票
2 回答
2464 浏览

java - Java:如何使这个哈希表函数在更大的范围内工作

我有以下代码,它将采用 30 个字符串(即数字)并在使用“%29”计算它们后将它们放入哈希表中

为方便起见,这里是输出:

如您所见,我已对其进行了设置,以便它告诉我在构建此特定哈希表时发生的平均冲突次数。有 30 个号码和 30 个空格供他们占用。我尝试将可用空间量的参数从 30 更改为 60,但这并没有改变任何东西,我想弄清楚如何解决这个问题。

这对我很重要,因为我想把这段代码提升一个档次。我想尝试这个程序以获得更大的数字集,可能是一千个或更多,但我不想只是手动输入一千多个字符串数字。我将如何编写一个可以为我执行此操作的循环?例如,如果我在它的参数中输入 1000,它将产生一千个字符串表示法(如代码中所示)的数字,这些数字将被使用。

我还想这样做,以便我可以在单个程序执行中运行多个这些字符串数字。例如,哈希表可以保存 1000 个数字,所以它会运行 1 个数字的程序,然后是 2,3,等等......直到它一直这样做到 1000。并且每次它这样做,我希望它输出该特定运行中发生的平均碰撞次数。只有 1 个数字不会发生冲突,最终会随着数字数量的增加而发生冲突。

通过这样做,我可以制作一个图表,显示碰撞数量如何随着数字与可用点的比率的变化而变化。例如,x 轴是平均碰撞次数,y 轴是输入数字数量与总可用空间的比率(意味着它的值范围为 0 到 1.00)

提前感谢所有花时间教我的人。对此,我真的非常感激。

0 投票
0 回答
672 浏览

hash - 从连续整数创建唯一的 8 字符字符串

我需要从一个连续的整数(0、1、2、3 等)生成一个唯一的 8 个字符串。

我尝试使用 md5/sha256/sha512 对 int 进行哈希处理,然后将其缩短为 8 个字符,但是如果可能的话,我想尝试避免很多冲突。

我研究了诸如 crc32 之类的算法,但从中产生的哈希包含太多我喜欢的数字。

任何人都可以提出另一种方法来做我需要的事情吗?

0 投票
1 回答
127 浏览

c++ - Hash Tables: why doesn't this code resolve collisions?

This insert function doesn't seem to insert correctly and overwrites previous entries. Also the duplicate check doesn't work as intended and only works half the time.

It seems to insert fine and the duplicate key check works on one data set but not the other with more data values that fill the table to TBL_SIZE = 31. Also the FREE constant sets all vector values to $$$ to designate a free spot.

0 投票
2 回答
409 浏览

java - java哈希映射碰撞

如果已经问过这个问题,我很抱歉,但我不能很好地回答我的问题。我正在研究 HashMap 我把两个值 (7,"value test 1") (7,"value test 2) 根据规范 java API HashMap 把第一个值替换为第二个。

我的问题是什么时候解决碰撞?为什么我的第二个值没有存储在 linkedList 中或存储在 hashMap 的另一个位置?是由于equals或hascode方法吗?

此致

0 投票
0 回答
161 浏览

map - Map 如何处理索引冲突?

我正在尝试创建一个集合,以这种方式将某个类型映射到我的 Vector2i 类型:

我正在将我以前在 C# 中的一个项目翻译成 Haxe。在 C# 中,我只需要在 Vector2i 中实现一个接口,就可以使用 Vector2i 对 Dictionary 进行索引,但我不确定我必须做什么才能使用 Haxe 实现相同的目标。

0 投票
1 回答
378 浏览

c++ - 大文本中搜索词的哈希表。O(1)

我必须为大文本(搜索、粘贴、删除)创建运算速度为 O(1) 的哈希表。这是真的吗?如何减少碰撞?有什么例子吗?后来我再也没用过 C++。我找不到任何带有文本字典的示例哈希表。
目标语言 C++(仅限 STL)。

0 投票
1 回答
100 浏览

hash - 为什么我的标识符冲突率增加?

我使用 IP + 用户代理的哈希作为访问网站的每个用户的唯一标识符。这是一个简单的方案,但有一个非常明显的缺陷:标识符冲突。多个人使用相同的 IP + 用户代理组合浏览互联网。由相同哈希标识的唯一用户将被识别为单个用户。我想知道这个标识符错误的发生频率。

为了计算频率,我创建了一个两步漏斗,理论上应该以零百分比转换:publish.click> signup.complete。(用户必须在发布之前注册。)运行这个漏斗 1 天给我一个0.37%的转化率。我想,这个数字是我对该漏斗的唯一标识符冲突概率。查看原始数据(大约 10,000 行长的表格),我证实了这个假设。publish.click37 次注册是由与在漏斗期间(1 天)完成的老用户相同的哈希标识的新用户完成的。(我知道这一点是因为散列在漏斗中匹配,而在注册时分配的 UID 没有。)

我以为我已经想通了...

但后来我运行了 1 周的漏斗,转化率提高到了0.78%。5个月,转化率跃升至1.71%

这里有什么可以玩的?为什么我的转化(碰撞)率随着实验周期的延长而增加?

我认为这可能与唯一用户通常只触发signup.complete一次这一事实有关,而他们可能会publish.click在一段时间内触发多次。然而,我正在努力将这个假设变成文字。

任何帮助,将不胜感激。

0 投票
2 回答
3378 浏览

java - Java中哈希表的单独链接

基于以下代码片段:

.

  1. 为什么这里没有发生链接?当我以 Zara 作为键重新输入时,旧值被覆盖。我希望它被添加到Zara".hashcode()索引的链接列表的末尾。
  2. Java 是否仅将单独的链接用于冲突处理?
  3. 如果我不能使用链接(正如我在上面尝试过的那样),请建议一种常用的方法。
0 投票
1 回答
992 浏览

java - 如何使用哈希函数在java中生成不重复的随机数

我想在我的 android 音乐播放器应用程序中添加一个随机播放选项。为此,我在 java 中调用一个随机函数来返回一个介于 0 和当前播放歌曲列表大小之间的数字。问题是该函数返回与以前相同的值,并且在该值中发生重复。堆栈溢出本身有很多解决方案可以避免这个问题。该解决方案以及以下解决方案不适用于我的情况。1. 创建一个混洗数组包含 0 到最大列表大小值。它将失败,因为歌曲列表的大小是动态的。2. 洗牌歌曲列表数组本身。由于时间复杂性,它将失败。

我需要的是一个数学哈希函数,它将执行以下操作..

如果 50 是最大范围,则输入数字 1 将映射到任何其他数字,比如 34。输入 2 到任何其他数字,比如 21。输入 3 到任何其他数字,比如 10 等等。所有映射的数字都应该在 50 范围内并且不允许重复。(映射时没有联盟)也不允许映射到该数字。请注意,如果最大范围相同(在本例中为 50)并且此函数的输入数字 2 应在整个应用程序的任何时间返回值 21。

函数时间复杂度应该更低。

0 投票
1 回答
2202 浏览

hash-collision - 引起 MD5 碰撞是否“容易”?

这个页面看来,您每秒可以进行 50 亿次哈希。这是否意味着不难造成碰撞?如果我想创建一个具有特定 MD5 或 SHA1 的文件,需要多长时间?

根据我的数学(使用 2^160),它仍然需要很长时间,但据我所知,暴力破解 160 位 sha1 哈希并不是 2^160