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!

  • Global Moderator

    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.