Get number between 0 and 1 from math.noise

Hi
I use math.clamp to get a number between 0 and 1 from a math.noise

local height = math.clamp(h,0,1)
local temperature = math.clamp(t,0,1)

But unfortunately it mostly returns 0 and the chunk are mostly either snowy mountain, mountain or ocean.

The h and t are generated like this:

heightMap[x][z] = math.noise(SEED, x/TERRAIN_SMOOTHNESS, z/TERRAIN_SMOOTHNESS) * HEIGHT_SCALE

If you meant getting decimal numbers like 0.237, 0.585, or 0.177 then you could try multiplying the t or h by 100, then dividing it, and THEN clamping it.

Not really an expert in noises so I don’t really have any clue

1 Like

math.noise mostly returns from -1 to 1. You want to get a number between 0 and 1.

-1 to 1 is a range of two, compared to the range of 1 of 0 to 1. This means you should divide math.noise by 2, getting a range of -0.5 to 0.5.

Then all you need to do is translate the range in the positive direction by 1. This ends up being math.noise(x, y, z)*0.5+1.

Then you just need to clamp this result: math.clamp(math.noise(x, y, z)*0.5+1,0,1) (formatted like your code: math.clamp(h*0.5+1,0,1)). (Note this still tends towards 0 and 1, but it shouldn’t be very noticeable.)

For more info, check out the DevHub:

1 Like