Every in-game hour, the next weather type is picked from a table. The table is 40 (or maybe 34, can't quite remember) entries long. If it is raining now, it will be raining again in 40 in-game hours.
The visual effects for the weather type will transition over the hour.
At 2:00 it would be 100% sunny.
At 2:15 it would be 75% sunny and 25% overcast
At 2:30 it would be 50/50
The table frequently has the same weather type for several hours so the weather isn't always in-flux.
There are script commands to override the weather type. This allows the level designers to force the weather type for a particular mission or cut-scene.