gpt4 book ai didi

algorithm - 返回值介于 -1 和 1 之间的哈希函数

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:29:01 27 4
gpt4 key购买 nike

我正在寻找一个哈希函数,它接受任何整数(正数或负数,但如果这样更容易的话,它可以被限制在 int 范围内)作为输入,并返回一个介于 -1 和 1 之间的实数。是有这样的函数,或者有什么明显的方法可以从另一个哈希函数构建它?

函数不必是安全的,只要它足够“随机”即可。如果存在 C/C++ 实现,则加分。

最佳答案

  1. 为整数选择任何哈希函数,例如 boost::hash ,
  2. 通过除以整数最大值的一半将结果归一化为2
  3. 减去 1。

这里有一个快速的 hack 来演示:

#include<stdio.h>

double inthash(unsigned int key)
{
key += (key << 12);
key ^= (key >> 22);
key += (key << 4);
key ^= (key >> 9);
key += (key << 10);
key ^= (key >> 2);
key += (key << 7);
key ^= (key >> 12);
return key / 2147483647.5 - 1;
}

void main()
{
printf("%f\n", inthash(1));
printf("%f\n", inthash(2));
printf("%f\n", inthash(3));
printf("%f\n", inthash(10000));
printf("%f\n", inthash(10001));
}

输出:

0.368240
-0.263032
-0.892034
-0.428394
-0.150713

关于algorithm - 返回值介于 -1 和 1 之间的哈希函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4015251/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com