Found some code on the DevForum that does pick a new sound every time but only picks the same sound when randomly picked and does not variate.
code:
local Lighting = game.Lighting
local Ambient = Lighting.OutdoorAmbient
local Clouds = game.Workspace.Terrain.Clouds
local WeatherSounds = game.Workspace.WeatherSounds
local TS = game:GetService("TweenService")
local Sound = {}
for i,v in pairs(WeatherSounds:GetChildren()) do
if v:IsA("Sound") then
table.insert(Sound,v)
end
end
local RandomSound = Sound[math.random(1,#Sound)]
local CloudTweenLight = TS:Create(Clouds, TweenInfo.new(1,Enum.EasingStyle.Elastic,Enum.EasingDirection.Out), {Color = Color3.new(1, 1, 1)})
local CloudTweenDark = TS:Create(Clouds, TweenInfo.new(1,Enum.EasingStyle.Elastic,Enum.EasingDirection.Out), {Color = Color3.new(0.0980392, 0.0980392, 0.0980392)})
local AmbientTweenLight = TS:Create(Lighting, TweenInfo.new(1,Enum.EasingStyle.Elastic,Enum.EasingDirection.Out), {OutdoorAmbient = Color3.fromRGB(118, 118, 118)})
local AmbientTweenDark = TS:Create(Lighting, TweenInfo.new(1,Enum.EasingStyle.Elastic,Enum.EasingDirection.Out), {OutdoorAmbient = Color3.fromRGB(64, 64, 64)})
while true do
Clouds.Color = Color3.new(0.0980392, 0.0980392, 0.0980392)
Lighting.Ambient = Color3.fromRGB(64, 64, 64)
wait(math.random(0, 10))
RandomSound.Playing = true
CloudTweenLight:Play()
AmbientTweenLight:Play()
wait(2)
CloudTweenDark:Play()
AmbientTweenDark:Play()
wait(2)
wait(math.random(0, 2))
end