How to make this noise mountain look less noisy

as you ca see it’s pretty obvious that it uses noise, but how can I make the mountain look more natural, here’s my code

local Seed = 0

local WorldSize = 100
local Scale = 250
local Frequency = 10
local Amplitude = 50
local TerrainYLength = 100

local CurrentX = 0
local CurrentZ = 0
local CurrentXOffset = 0
local CurrentZOffset = 0

local function ReturnTerrain()
	return game.ReplicatedStorage.TerrainBlock:Clone()
end

function color3torgb(color3)
	return color3.R*255,color3.G*255,color3.B*255
end

local random = Random.new(Seed)
local xOffset = random:NextNumber(-100000, 100000)
local zOffset = random:NextNumber(-100000, 100000)
local MidPoint = WorldSize/2

local BaseModel = Instance.new("Model")


repeat
	CurrentX = 0
	CurrentXOffset = 0
	repeat
		local sampleX = CurrentX / Scale * Frequency + xOffset
		local sampleZ = CurrentZ / Scale * Frequency + zOffset

		local baseY = math.clamp((math.noise(sampleX, sampleZ) + 0.5), 0, 1)
		local baseAmp = Amplitude
		baseAmp-=(CurrentX - WorldSize/2)
		baseAmp*=5
		local y = baseY * ( baseAmp )		
		local defaultColor = Color3.fromRGB(85, 0, 127)
		
		for _,v in game:GetService('ReplicatedStorage'):FindFirstChild("TerrainLevelConfigurations"):GetChildren() do
			local min = v:FindFirstChild("MinHeight").Value
			local max = v:FindFirstChild("MaxHeight").Value
			
			if y>min and y<max then
				local c:Color3 = Color3.new(color3torgb(v.Color.Value))
				local var = v.Variety.Value
				
				local function get(x)
					x = math.clamp(x-Random.new():NextNumber(-var, var), 0, 255)
					
					
					return x 
				end
				
				defaultColor = Color3.fromRGB( get(c.R), get(c.G), get(c.B) )
			end
		end

		local c = ReturnTerrain()
		c.Position = Vector3.new(CurrentXOffset, y, CurrentZOffset)
		c.Color = defaultColor
		c.Size = c.Size+Vector3.new(0, TerrainYLength, 0)
		c.Position -= Vector3.new(0, TerrainYLength/2, 0)
		c.Parent = BaseModel
		CurrentXOffset+=c.Size.X
		CurrentX+=1
	until CurrentX>=WorldSize
	CurrentZ+=1
	CurrentZOffset+=4

until CurrentZ>=WorldSize

BaseModel:PivotTo(CFrame.new(0, BaseModel:GetExtentsSize().Y/2, 0))
BaseModel.Parent = workspace

or better question how can I “overlap” the noise with another?

local Seed = 0

local WorldSize = 100
local Scale = 250
local Frequency = 10
local Amplitude = 50
local TerrainYLength = 100

local CurrentX = 0
local CurrentZ = 0
local CurrentXOffset = 0
local CurrentZOffset = 0

local function ReturnTerrain()
	return game.ReplicatedStorage.TerrainBlock:Clone()
end

function color3torgb(color3)
	return color3.R * 255, color3.G * 255, color3.B * 255
end

local random = Random.new(Seed)
local xOffset = random:NextNumber(-100000, 100000)
local zOffset = random:NextNumber(-100000, 100000)
local MidPoint = WorldSize / 2

local BaseModel = Instance.new("Model")
repeat
	CurrentX = 0
	CurrentXOffset = 0
	repeat
		local sampleX = CurrentX / Scale * Frequency + xOffset
		local sampleZ = CurrentZ / Scale * Frequency + zOffset
		local baseY = math.clamp((math.noise(sampleX, sampleZ) + 0.5), 0, 1)
		local additionalNoise = math.clamp((math.noise(sampleX * 2, sampleZ * 2) + 0.5), 0, 1) * 0.2
		local y = (baseY + additionalNoise) * Amplitude
		local baseAmp = Amplitude
		baseAmp -= (CurrentX - WorldSize / 2)
		baseAmp *= 5
		y *= baseAmp
		local defaultColor = Color3.fromRGB(85, 0, 127)
		for _, v in game:GetService('ReplicatedStorage'):FindFirstChild("TerrainLevelConfigurations"):GetChildren() do
			local min = v:FindFirstChild("MinHeight").Value
			local max = v:FindFirstChild("MaxHeight").Value

			if y > min and y < max then
				local c:Color3 = Color3.new(color3torgb(v.Color.Value))
				local var = v.Variety.Value

				local function get(x)
					x = math.clamp(x - Random.new():NextNumber(-var, var), 0, 255)
					return x
				end

				defaultColor = Color3.fromRGB(get(c.R), get(c.G), get(c.B))
			end
		end
		local c = ReturnTerrain()
		c.Position = Vector3.new(CurrentXOffset, y, CurrentZOffset)
		c.Color = defaultColor
		c.Size = c.Size + Vector3.new(0, TerrainYLength, 0)
		c.Position -= Vector3.new(0, TerrainYLength / 2, 0)
		c.Parent = BaseModel
		CurrentXOffset += c.Size.X
		CurrentX += 1
	until CurrentX >= WorldSize
	CurrentZ += 1
	CurrentZOffset += 4

until CurrentZ >= WorldSize

BaseModel:PivotTo(CFrame.new(0, BaseModel:GetExtentsSize().Y / 2, 0))
BaseModel.Parent = workspace

Try this, as you can see it adds an additional noise layer for different variation within the script, as seen here

  local additionalNoise = math.clamp((math.noise(sampleX * 2, sampleZ * 2) + 0.5), 0, 1) * 0.2

Just play around with it really and you should be able to get the result you want

if you layer more noise with different frequencies and amplitudes, it is called Perlin Noise

usually each layer frequency goes up by a factor, and amplitude decrease by a factor