#include <iostream>
#include <cstdlib>
#include <ctime>
// Constants
const double INITIAL_TEMPERATURE = 20.0; // Initial temperature in degrees Celsius
const double TEMPERATURE_VARIATION = 5.0; // Max variation in temperature per day
const double INITIAL_PRECIPITATION = 0.0; // Initial precipitation in mm
const double PRECIPITATION_CHANCE = 0.3; // Chance of precipitation per day
const double MAX_PRECIPITATION = 20.0; // Max precipitation amount per day
const int NUM_DAYS = 30; // Number of days to simulate
// Function to generate a random double between min and max
double randomDouble(double min, double max) {
return min + static_cast<double>(rand()) / (static_cast<double>(RAND_MAX / (max - min)));
}
// Function to simulate weather patterns
void simulateWeather(double initialTemperature, double temperatureVariation, double initialPrecipitation,
double precipitationChance, double maxPrecipitation, int numDays) {
double temperature = initialTemperature;
double precipitation = initialPrecipitation;
std::cout << "Day Temperature (°C) Precipitation (mm)\n";
for (int day = 1; day <= numDays; ++day) {
// Random temperature variation
double tempVariation = randomDouble(-temperatureVariation, temperatureVariation);
temperature += tempVariation;
// Random precipitation event
double dailyPrecipitation = (randomDouble(0.0, 1.0) < precipitationChance) ?
randomDouble(0.0, maxPrecipitation) : 0.0;
precipitation = dailyPrecipitation;
// Output the weather for the day
std::cout << day << " " << temperature << " " << precipitation << "\n";
}
}
int main() {
// Seed the random number generator
srand(static_cast<unsigned>(time(0)));
// Simulate weather for a given number of days
simulateWeather(INITIAL_TEMPERATURE, TEMPERATURE_VARIATION, INITIAL_PRECIPITATION,
PRECIPITATION_CHANCE, MAX_PRECIPITATION, NUM_DAYS);
return 0;
}