从字符串中生成0和1之间的确定性哈希数。

问题描述 投票:0回答:1

我正在寻找一种在JavaScript中对字符串进行 "哈希 "的方法,从而使

  • 结果是确定性的(对相同的输入字符串总是产生相同的结果)
  • 结果是一个介于0和1之间的小数。
  • 结果是(某种程度上)均匀地分布在0到1的空间里。

比如说

decimalHash('hallo world') = 0.145     // some made up number
decimalHash('how are you?') = 0.345    // some made up number
decimalHash('fine, thanks!') = 0.945   // some made up number

我一直在寻找这样的方法 但目前找到的所有哈希函数都有不同的特点。如果有任何帮助,将不胜感激!

javascript hash hashcode
1个回答
1
投票

你可以建立一个自己的通过使用一个值为每个聊天字符与一个因素和这个值。最后只取小数部分。

这种方法可能会产生碰撞。

const decimalHash = string => {
    let sum = 0;
    for (let i = 0; i < string.length; i++)
        sum += (i + 1) * string.codePointAt(i) / (1 << 8)
    return sum % 1;
}

console.log(decimalHash('a'));
console.log(decimalHash('aa'));
console.log(decimalHash('hallo world'));
console.log(decimalHash('how are you?'));
console.log(decimalHash('fine, thanks!'));
© www.soinside.com 2019 - 2024. All rights reserved.