什么是相对较短的string最好的32位散列函数? string是由英文字母,数字,空格和一些附加字符( # , $ , . ,…)组成的标签名称。 例如: Unit testing , C# 2.0 。 我在“最小碰撞”中寻找“最好”,performance对于我的目标并不重要。
有没有一种方法来计算一个string的一般“相似性分数”? 在某种程度上,我不是比较两个string在一起,而是我得到一些数字(哈希)为每个string,可以稍后告诉我,两个string是或不相似的。 两个相似的string应该有相似的(接近)散列。 让我们以这些string和分数为例: Hello world 1000 Hello world! 1010 Hello earth 1125 Foo bar 3250 FooBarbar 3750 Foo Bar! 3300 Foo world! 2350 你可以看到Hello world! 和你好世界是相似的,他们的分数是相互接近的。 这样,find给定string的最相似的string将通过从其他分数中减去给定的string得分,然后对它们的绝对值进行sorting来完成。
就复杂性和安全性而言,哪个是最好的整体哈希algorithm? MD5或SHA1? 据我所知, MD5比SHA1快,但SHA1比MD5更复杂。 我错过了什么?
我想要生成优惠券代码,例如AYB4ZZ2 。 不过,我也希望能够标记使用过的优惠券,并限制其全球数量,比方说N 天真的做法就像“生成N独特的字母数字代码,把它们放到数据库中,并对每个优惠券操作执行数据库search”。 然而,据我所知,我们也可以尝试find一个函数 MakeCoupon(n) ,它将给定的数字转换成一个具有预定义长度的类似优惠券的string。 据我所知, MakeCoupon应该满足以下要求: 是双面的。 这是反MakeNumber(coupon)应该是有效的可计算的。 MakeCoupon(n)输出应该是字母数字的,并且应该具有小的和恒定的长度 – 以便它可以被称为人类可读的 。 例如SHA1摘要不会通过这个要求。 实用的独特性。 对于每个自然n <= N , MakeCoupon(n)结果应该是完全唯一的或唯一的,例如, MD5是唯一的(具有相同的非常小的碰撞概率)。 (这是一个棘手的定义)如何从一个优惠券代码枚举所有剩余的优惠券不应该是显而易见的 – 比方说MakeCoupon(n)和MakeCoupon(n + 1)应该在视觉上有所不同。 例如MakeCoupon(n),它简单地输出n填充零将失败这个要求,因为000001和000002实际上并没有“视觉上”的差异。 问: 是否存在满足以下要求的函数或函数发生器? 我的search尝试只会把我带到[CPAN] CouponCode,但是它没有满足相应函数的双射要求。
假设简单的统一散列,那么任何给定的值就像散列到散列的任何一个槽中一样。 为什么使用大小为127而不是128的表格更好? 我真的不明白2号码的力量有什么问题。 或者它实际上如何改变。 在使用除法的时候,我们通常会避免m(table size)的某些值。 例如,m不应该是2的幂,因为如果m = 2 ^ p,那么h(k)就是k的p个最低位。 假设可能的元素只在1到10000之间,我把表格大小选为128. 127怎么能更好? 所以128是2 ^ 6(1000000),127是0111111.这个有什么不同? 所有数字(散列时)仍然是127的k的最低位。 我有什么问题吗? 我正在寻找一些例子,因为我真的不明白为什么这是不好的。 提前感谢! PS:我知道: 哈希表:为什么大小应该是素数?
在ruby1.9有没有一种方法来定义这个哈希与新的语法? irb> { a: 2 } => {:a=>2} irb> { ab: 2 } SyntaxError: (irb):5: syntax error, unexpected tLABEL { ab: 2 } ^ 与旧的,它的工作: irb> { :"ab" => 2 } => {:"ab"=>2}
我想用value.some_methodreplace散列中的每个value 。 例如,给定一个简单的散列: {"a" => "b", "c" => "d"}` 每个值应该是.upcase d,所以它看起来像: {"a" => "B", "c" => "D"} 我试过#collect和#map但总是把数组取回来。 有没有一个优雅的方式来做到这一点? UPDATE 该死的,我忘了:哈希是在一个实例variables,不应该改变。 我需要一个新的哈希与更改的值,但不希望明确定义该variables,然后遍历哈希填充它。 就像是: new_hash = hash.magic{ … }
我想创build一个“ I love cupcakes ”(用“abcdeg”键签名) 我怎样才能使用Node.js Crypto创build哈希?
如果我们有以下优先级(按此顺序),最好的散列algorithm是什么: 最小的哈希碰撞 性能 它不一定要安全。 基本上我试图创build一个基于一些对象的属性组合的索引。 所有的属性都是string 。 任何引用的C#实现将不胜感激。
什么整数散列函数是好的,接受一个整数散列键?