public SimplexValueNoise(double persistence, double frequency, double amplitude, int octaves, long seed)
: base(persistence, frequency, amplitude, octaves, seed)
{
perm = new short[256];
short[] source = new short[256];
for (short i = 0; i < 256; i++)
source[i] = i;
seed = seed * 6364136223846793005 + 1442695040888963407;
seed = seed * 6364136223846793005 + 1442695040888963407;
seed = seed * 6364136223846793005 + 1442695040888963407;
for (int i = 255; i >= 0; i--)
{
seed = seed * 6364136223846793005 + 1442695040888963407;
int r = (int)((seed + 31) % (i + 1));
if (r < 0)
r += (i + 1);
perm[i] = source[r];
source[r] = source[i];
}
}