Okay for random weather;
Make a new event, call it "Weather" or something, and open it up;
Make a Label, call it "WeatherReset"
Make a variable, call it RandomWeather, and make it's operand be Random 1 - Anything, for this I'll say 20
Now, make a conditional branch like so:
Conditional Branch;
If Variable[RandomWeather] = 1
Set Weather Effect: Rain
Jump to Label: WeatherReset
Now, on the "else" statement, make ANOTHER conditional branch like:
Conditional Branch;
If Variable[RandomWeather] = 2
Set Weather Effect: Snow
Jump to Label: WeatherReset
Now, on the "else" statement, make ANOTHER conditional branch like:
Conditional Branch;
If Variable[RandomWeather] = 3
Set Weather Effect: Storm
Jump to Label: WeatherReset
Now on the "else" statement, just put a;
Set Weather Effect: None
Jump to Label: WeatherReset
Sorry if this seems rushed, but either way it should work for you.
Also, this is untested, so if there's any problems, post them.