Okay, so I decided to try and put together an F1 season simulator. Just a little project to see if I could map out a season.

Getting Started
First thing, I needed to figure out what I actually wanted to simulate. A full race simulation felt like way too much work, you know, modelling overtakes and pit stops and all that. Nah, I just wanted the season’s results. Who wins the championship? Which team does best? That sort of thing.
So, I decided to keep it simple: simulate race results based on some kind of performance rating for teams and drivers, then calculate points, and see how the standings change over a whole season.
Setting up the Basics
Next step was getting the data together. I needed teams and drivers for a fictional season. Didn’t want to get bogged down in real-world stats changing all the time, so I just made up, like, 10 teams. Gave them some silly names. Then two drivers for each team.
Then the tricky part: how to rate them? I decided each team needed a base performance score. Think of it like how good their car is overall. Then, each driver got their own skill score. A driver’s total performance for a race would be a mix of their skill and their team’s car performance. Maybe add a tiny bit of random luck in there too, because, you know, F1 is unpredictable.
- Listed out 10 teams.
- Assigned 2 drivers per team.
- Gave each team a ‘car score’ (say, 1 to 100).
- Gave each driver a ‘skill score’ (say, 1 to 100).
I just put all this into a simple file, nothing fancy. Could’ve used a spreadsheet I guess, but just typed it out first.

Running the Races
Okay, got the teams, drivers, and their scores. Now for the “simulation” part. I planned out a 20-race season. For each race, I needed to figure out the finishing order.
My logic was basic: calculate each driver’s ‘race score’. I tried just adding team score and driver score, plus a small random number. The driver with the highest score finishes first, second highest is second, and so on. Simple stuff.
Example race calculation (for one driver):
Total Score = (Team Car Score 0.6) + (Driver Skill Score 0.4) + Random Factor (small number)
Did this calculation for all 20 drivers in a race. Then I just sorted them based on this score to get the finishing order from 1st to 20th.

After getting the order, I dished out points based on the standard F1 points system (25 for 1st, 18 for 2nd, etc., down to 1 point for 10th). Added these points to the drivers’ and teams’ championship tallies.
Simulating the Season
I then just repeated this process for all 20 races I had planned. Calculate scores, sort drivers, award points. Race after race.
It was pretty cool watching the championship standings change after each simulated race. Sometimes the driver I expected to win had a ‘bad race’ because of the random factor, and an underdog got good points. Made it feel a bit more real.
Wrapping Up
At the end of the 20 simulated races, I had my final championship standings for both drivers and teams. Checked who won. It worked! The teams and drivers I gave the highest initial scores generally did better, but the randomness mixed things up enough to keep it interesting.
It’s not super complex, obviously. Doesn’t factor in reliability, crashes, different track types, strategies… none of that. But as a basic F1 season simulator just spitting out plausible championship results? Yeah, it did the job. Was a fun little exercise to put together.
