用于产生噪声的哈希函数

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

我正在制作值噪声发生器,发现我当前的哈希值在图像中产生了一种模式:

enter image description here

因此,我正在寻找更好的,无法预测/重复的哈希函数。

我使用哈希而不是随机数,因为我希望它具有确定性。给定(x,y)坐标,它应始终产生相同的结果。

这也很好,但是如果可以扩展散列函数以轻松接受更多参数,例如(x,y,z)或(x,y,z,t),而不仅仅是两个,这不是强制性的。

我当前的哈希是:

public static class Hash
{
    public static float GetHash(int x)
    {
        x = x ^ 61 ^ (x >> 16);
        x += x << 3;
        x ^= x >> 4;
        x *= 0x27d4eb2d;
        x ^= x >> 15;
        return x / (float)int.MaxValue;
    }

    public static float GetHash(int x, int y) => GetHash((y << 8) + x);
}

我添加了行x / (float)int.MaxValue,因为我希望浮点数从0到1。

但是我必须承认我只是从某个地方复制粘贴它。按位运算(和散列)不是我的强项。

c# hash hashcode
1个回答
0
投票

我会使用https://github.com/Auburns/FastNoise_CSharp这样的库

也许您可以从该FastNoise.cs文件中的源代码中学习

© www.soinside.com 2019 - 2024. All rights reserved.