Math.noise: how and why to use it?

  1. What do you want to achieve? Keep it simple and clear!
    I want learn how to use math.noise.

  2. What is the issue? Include screenshots / videos if possible!
    See above: i dont know how to use it correctly.

  3. What solutions have you tried so far? Did you look for solutions on the Developer Hub?
    I have look a bit on Developer Hub and Scripting Helpers, but listening to different methods and tips from different people is always better than concentrating on just one topic, tip or explanation, because everyone has their tricks and other ways to explain it.

If I’ve explained something wrong, please tell me. Thank you for taking the time to read.


The usage of math.noise is common during procedural terrain generation. I tested it once before. Unfortunately, I have lost the scripts used for such creation.

IIRC it generates values between the interval of -0.5 and 0.5.



math.noise is mostly common in games that have procedural terrain generation, i.e Minecraft. It’s very common to see in ROBLOX games that have randomized hills or terrain generation.


But what’s the point of it if you just use math.random?


math.random is for generating random numbers, and most likely will be highly inefficient due to it only being integers and not supporting decimals. Perlin noise generates something between -0.5 and 0.5.


To expand upon the previous points, the closer two points are in distance, the closer the generated numbers will be. This allows for much smoother generation compared to random numbers. For example, math.random might generate -0.5 and 0.5 (a difference of 1.0) for two points that are adjacent to each other, whereas math.noise might do -0.5 and -0.4 (a difference of 0.1).


Thx, bu when i want make a cave generator, like minecraft neather, then how to make.

You’re going a little astray from it and the generator does include the math.noise and some other programmed measures with thresholds, values etc.

I cannot provide any detail of how you can make one. Why don’t you try searching around the web and try it yourself first?

1 Like

I want to add on that math.random is a pseudo-random number generator. What this means is that the numbers will appear random, but as psuedo-random number generators work in a loop fashion, eventually it’ll loop around and you will retain the same pattern you started with, and thus the same terrain pattern. Not only is it inefficient, but it is also inaccurate in its own right. Of course, there are good applications for math.random. Without arguments, math.random evaluates from 0 to < 1. Refer to this devforum link on the math api for additional information on the documentation between math.noise and math.random.


It’s documented as generating values in that range, but I’m pretty sure it doesn’t actually.


math.noise generates numbers between -.5 and .5, not randomly, but using a procedural algorithm. it is super useful. If you generated terrain using math.random, it wouldn’t look smooth.


But how would you get the procedural numbers if it’s only one number?

1 Like