Der Bundesliga-Simulator 2018/19
-
Wer kennt das nicht? Die neue Bundesligasaison steht vor der Tür und man fragt sich "Wo landet mein Lieblingsverein"?
Stärkere Teams erreichen im Mittel natürlich die oberen Plätze, aber es kommt auch vor, dass man trotz der besseren Leistung unglücklich verliert (Schiedsrichterentscheidungen, Chancenverwertung, etc.).Mit meinem Programm habe ich versucht, herauszufinden, inwieweit der Zufall eine Saison entscheiden kann.
Jedes Team bekam eine fest definierte Stärke:
Bayern 100
Bei den restlichen Teams wurde die Punktzahl aus der letzten Saison mit der der Bayern aus der letzten Saison dividiert und mal 100 gerechnet, um die Verhältnisse halbwegs gut darzustellen. Bei Fortuna und Nürnberg wurden die Punkte der Zweitligasaison erst halbiert und dann durch die bayrische Punktzahl geteilt.Natürlich kommt es auch zu Unentschieden. Da habe ich einfach einen Remis-Koeffizienten eingeführt. Liegt die betragsmäßige Differenz der Zufallszahlen unter einem bestimmten Wert, dann ging die Partie Unentschieden aus. Als Remiskoeffizienten habe ich den Wert 8 genommen.
Tore werden in der Simulation keine geschossen. Jedes Team bekommt pro Begegnung eine Zufallszahl <= der Stärke. Um zu siegen muss also die Zufallszahl höher als die des Gegners + Remiskoeffizent sein.
In der Simulation kann man einstellen, wie viele Saisons man simulieren will und wie groß der Remiskoeffizient sein soll. Die Stärken sind auch variierbar. Wer mag kann diese anpassen, denn es ist davon auszugehen, dass der BVB deutlich stärker sein wird als letzte Saison.
Nach Abschluss aller Saisons wird angezeigt, wie viele Meisterschaften für die Vereine raussprangen. Bei Punktgleichheit wurde immer das Team bevorzugt, dass in der Saison 17/18 weiter vorne lag.
#include<iostream> #include<random> #include<time.h> #include<math.h> #include<string> #include <algorithm> using namespace std; int main() { mt19937 mt_rand(time(0)); int erg[18][18][2]={0}; int punkte[18]={0}; int remis[18]={0}; int siege[18]={0}; int verloren[18]={0}; int meister[18]={0}; int saisons=10; // ANZAHL DER ZU SIMULIERENDEN SAISONS int a=8; // REMISKOEFFIZIENT int swap=0; string swapswap; string namen[18]={ "FC Bayern", "Schalke 04", "Hoffenheim", "Dortmund", "Leverkusen", "RB Leipzig", "Stuttgart", "Frankfurt", "Gladbach", "Hertha BSC", "SV Werder", "Augsburg", "Hannover", "Mainz 05", "Freiburg", "Wolfsburg", "Nuernberg", "Fortuna 95"}; int teams[18]={ // STÄRKEN DER TEAMS 100, // Bayern 75, // Schalke 65, // Hoffenheim 65, // Dortmund 65, // Leverkusen 63, // Leipzig 61, // Stuttgart 58, // Frankfurt 56, // Gladbach 51, // Hertha 50, // Werder 49, // Augsburg 46, // Hannover 43, // Mainz 43, // Freiburg 39, // Wolfsburg 38, // Nürnberg 36 // Fortuna }; for(int meisterschaften=1;meisterschaften<=saisons;meisterschaften++) { string namen[18]={"FC Bayern", "Schalke 04", "Hoffenheim", "Dortmund", "Leverkusen", "RB Leipzig", "Stuttgart", "Frankfurt", "Gladbach", "Hertha BSC", "SV Werder", "Augsburg", "Hannover", "Mainz 05", "Freiburg", "Wolfsburg", "Nuernberg", "Fortuna 95"}; for(int heim=0;heim<=17;heim++){ for(int gast=0;gast<=17;gast++) { if(heim==gast) { continue; } erg[heim][gast][0]=mt_rand()%teams[heim]+1; erg[heim][gast][1]=mt_rand()%teams[gast]+1; } } for(int team=0;team<=17;team++) { for(int gegner=0;gegner<=17;gegner++) { if(team==gegner){ continue; } if(abs(erg[team][gegner][0]-erg[team][gegner][1])<=a) { punkte[team]++; punkte[gegner]++; remis[team]++; remis[gegner]++; continue; } if(erg[team][gegner][0]>erg[team][gegner][1]) { punkte[team]+=3; siege[team]++; verloren[gegner]++; continue; } if(erg[team][gegner][0]<erg[team][gegner][1]) { punkte[gegner]+=3; verloren[team]++; siege[gegner]++; } } } for(int i=0;i<=17;i++) { if(punkte[i]==*max_element(punkte,punkte+18)) { meister[i]++; break; } } for(int durchlauf=1;durchlauf<=18;durchlauf++) { for(int team=0;team<=16;team++) { if(punkte[team]<punkte[team+1]) { swap=punkte[team]; punkte[team]=punkte[team+1]; punkte[team+1]=swap; swap=remis[team]; remis[team]=remis[team+1]; remis[team+1]=swap; swap=siege[team]; siege[team]=siege[team+1]; siege[team+1]=swap; swap=verloren[team]; verloren[team]=verloren[team+1]; verloren[team+1]=swap; swapswap=namen[team]; namen[team]=namen[team+1]; namen[team+1]=swapswap; } } } cout << "SAISON " << meisterschaften << endl; for(int i=0;i<=17;i++) { cout << i+1 << ". " << namen[i] << "\t\t" << punkte[i] << " " << siege[i] << " " << remis[i] << " " << verloren[i] << endl; } cout << endl << endl; for(int i=0;i<=17;i++) { punkte[i]=0; } for(int i=0;i<=17;i++) { remis[i]=0; } for(int i=0;i<=17;i++) { siege[i]=0; } for(int i=0;i<=17;i++) { verloren[i]=0; } } cout << "ANZAHL MEISTERSCHAFTEN" << endl; for(int i=0;i<=17;i++) { cout << i+1 << ". " << namen[i] << "\t" << meister[i] << endl; } }
Mit meinen vorgegebenen Stärken ist der FC Bayern klarer Favorit, aber ihr dürft die Saison gerne etwas spannender machen!
-
Dieser Beitrag wurde gelöscht!
-
Dieser Beitrag wurde gelöscht!
-
Dieser Beitrag wurde gelöscht!
-
Danke für einen weiteren deiner qualitativ hochwertigen Beiträge, @Swordfish . Aber Hauptsache anderswo behaupten, dass es an der grafischen Präsentation läge, dass das Forum für Neulinge unattraktiv ist.
-
@seppj sagte in Der Bundesliga-Simulator 2018/19:
Danke für einen weiteren deiner qualitativ hochwertigen Beiträge, @Swordfish .
Kein Problem. War dann auch der letzte. Bye.