To make a good noise for terrain generation you can hook up a noise texture to the scale of another noise texture. I like using this, but I noted one limitation- if the texture coordinates become displaced too far it does keep a constant pattern. You can visualize this well by viewing the volume of the output- the noise seems to stretch out directly away from the origin point of the object the farther away it goes. Why? How can I prevent this?
Procedural textures should generally never have variable scale - since the scale affects the "size" of the pattern in relation to the origin, varying the scale close to the origin will have small effects while this is magnified the further the point is from the origin (as all that space between the origin and the point has been scaled by the same amount).
A better solution is to distort the texture coordinates to 'compress' or 'expand' different regions of the texture based on the noise, rather than adjusting the scale. This will have an effect that is consistent regardless of distance to the origin.
For example, consider the following nodes :
Here's instead of the Noise varying the scale, the noise is combined with the coordinates to shift them a varying amount. This varies the rate of change of the vector as it moves across the texture, compressing some regions and expanding others. This can produce the following result :
Varying the properties of the Noise affects the frequency of the distortion and the Value node used for the multiply will affect the strength.