Hi, David,
The weather factor can be a random variation value from 1.0 to 0.0 with huge skew towards 1.
We can explain it plainly as diversion from optimum growing conditions, caused by weather fluctuations and environmental events. If we do not actually simulate weather per city but just have a randomized lookup table that might be solid enough.
What we define per city/region is the soil acidity (which could be an overlay map with small fluctuations on a region, but more or less around a fixed value for that region), the temperature, precipitation and sun input (W/m^2). For each of these excluding soil acidity there will be a
skewed distribution function calculated per region.
For each crop there will be a similar curve describing what the plant demands as ideal condition as well as their tolerance limits. For each property the overlap integral of these curves divided by the area of non overlap would form a factor between 1.0 and 0.0
These factors all multiplied will be the final suitability factor for the given crop in the given region. 1.0 is Eden-like conditions, 0.0 means this crop will never grow here. No harvest can be expected. You do not grow Avocados on Antarctica. But this factor is a static for the region, generated once per game initialization (or again if the player opens up a new City/Region)
Now lets pretend you found an Eden for Tomatoes. Even in Eden conditions there might be a spell of bad weather which will negatively affect your harvest, some extra cloudiness, storm, you name it. This is what I call the weather factor. It is kind of an abstraction that simulates fluctuations that cumulatively negatively influence the actual harvest output. I don't think the player wants to study the weather report and a prediction all along the growing season (but he would like to see the skewed curves graphically so he can compare them with crop types to see the overlap and expected harvest success), but he might want to see a current valuation of how much percent of an ideal harvest he can expect, that is updated weekly per farm. Most of the days this factor is somewhere between 1 and 0.998, (for each growing day multiplied with the result of the previous days, initialized with 1) , but lets have a couple of stormy days and they hit with 0.9 or 0.8 into the total calculations. Have a volcanic event, and the weather factor will be 0.3 for a week. The cumulative weather factor will drop quickly toward 0%. So even in Eden you might have a failing harvest if you had a lot of bad luck. Numbers her might require some fine tuning and testing to find not every player facing all the time century-flood like harvest losses.
Alternatively to one set of static skewed curves we might have a set per city for each month of a year and so would be able to simulate seasons. That would allow to define the optimum planting/harvesting period for each crop for each city, even allowing simulation based on their geographic location, summer and winter, with opposite on the southern hemisphere, and little of it around the equator. But that would be a bit beyond the minimum feasible product.