[PHP] Simulation Team A gegen Team B

Sammler

Well-known member
ID: 17948
L
23 Januar 2007
65
0
Ich bin gerade dabei, mein Fussball Tippspiel zu erweitern.
Ich hab mir überlegt, das nächste Spiel über eine Simulation vorherzusagen.

Bsp:

Bayern München gegen Schalke 04
Jedes Team hat einen bestimmten Wert für
Mannschaftsstärke
Verteidigung
Angriff

Die Werte werden berechnet über den aktuellen Verlauf der Saison.
Also gewinnt Bayern z.B. dann erhöht sich deren Level, verlieren die, sinkt der Level. Alles soweit kein Problem.

Nur die Simulation bereitet mir Kopfzerbrechen.
Wie könnte man sowas in php am besten machen.

Ne schleife die 100 mal durchläuft, und in der schleife läuft die Simulation.
Dann werden die 100 Durchgänge ausgewertet, und die Prognose erstellt.

Ne Idee, wie man quasi den Kampf simuliert ?
 
PHP:
$Manschaft_A = 73;
$Manschaft_B = 63;

// Differenz des Stärkenverhältnisses in % wird errechnet
$differenz = $Manschaft_A - $Manschaft_B;
$differenz_prozent_teil1 = $Manschaft_A / 100;
$differenz_prozent = $differenz / $differenz_prozent_teil1;

//Gesamtdifferenz wird errechnet
$gsmt_differenz_prozent = $differenz_prozent + '33,333';

//Berechnung der Häufigkeit des überlegenen Vorkomnisses
$array_haufigkeit_ueberlegen = '30' / '100' * $gsmt_differenz_prozent;


//Ueberlegenheit wird Prozentual ins Array gepackt
$array = array();
for($count = 1; $count < $array_haufigkeit_ueberlegen; $count++)
    {
array_push($array,1);
    }

//Restlich Vorhandene Positionen im Array werden errechnet$restziffern = '30' - $array_haufigkeit_ueberlegen;
$restziffern2 = $restziffern / 100;

//Prozentualen Anteil vom Unentschieden am Restlichen Prozentsatz berechnen
$unentschieden = '50' + $differenz_prozent;
$unentschieden_haufigkeit = $restziffern2 * $unentschieden;


//Unentschieden wird Prozentual ins Array gepackt
for($count = 1; $count < $unentschieden_haufigkeit; $count++)
    {
array_push($array,0);
    }

//Restlichen Plätze für schwach werden ermittelt und ins array gepackt
$schwach = '30' - $array_haufigkeit_ueberlegen - $unentschieden_haufigkeit;

//Unterlegenheit wird Prozentual ins Array gepackt
for($count = 1; $count < $schwach; $count++)
    {
array_push($array,2);
    }


//Ausgabe zu Testzwecken
$zahl = 100;
for($count = 1; $count < $zahl; $count++)
    {
$zufall = rand(0,30);
if ($array[$zufall] == 0) {
echo "Das SPiel endete <b>unentschieden</b>";
}
elseif ($array[$zufall] == 1) {
echo "Team <b>Stark</b> hat gewonnen";
}
elseif ($array[$zufall] == 2) {
echo "Team <b>Schwach</b> hat gewonnen";
}
echo "<br>";
    }

Vielleicht hilft dir das ein wenig weiter :>
 
PHP:
<?php

// Stärke von Offensive und Deffensive der beiden Mannschaften (1-100)
$Off_A = 23;
$Def_A = 45;
$Off_B = 67;
$Def_B = 89;

// Anzahl Angriffe/Conterangriffe während des Spiels anhand der
// Offensivwerte beider Mannschaften ausrechnen
$Angriffe = ($Off_A + $Off_B) / 10;
$Angriffe = rand($Angriffe/2, $Angriffe*1.5);
echo "Total Angriffe im Spiel: " . $Angriffe . "<br>";

// Damit nicht von vorne herein die Offensivere Mannschaft viel bessere
// Chancen hat, werden die Angriffe je zur hälfte auf beide Mannschaften verteilt
$Angriffe = round($Angriffe/2);

// Trefferquote bei einem Angriff beider Teams
$Quote_A = 50 + (($Off_A - $Def_B)/2);
$Quote_B = 50 + (($Off_B - $Def_A)/2);
echo "Quote A: " . $Quote_A . "<br>";
echo "Quote B: " . $Quote_B . "<br>";

$Goals_A = 0;
$Goals_B = 0;

echo "<br><br>Mitreissender Spielkomentar:<br>";
// Jetzt wird für jeden Angriff ausgerechnet, ob ein Goal gefallen ist oder nicht
for($i = 1; $i <= $Angriffe; $i++){
    if(rand(1, 100) < $Quote_A){
    $Goals_A = $Goals_A + 1;
    Echo "Goal für Team A!<br>";
    }
    else{
    Echo "Kein Goal für Team A...<br>";
    }
}

// Und noch das ganze für das andere Team
for($i = 1; $i <= $Angriffe; $i++){
    if(rand(1, 100) < $Quote_B){
    $Goals_B = $Goals_B + 1;
    Echo "Goal für Team B!<br>";
    }
    else{
    Echo "Kein Goal für Team B...<br>";
    }
}

Echo "<br><br>Resultat: " . $Goals_A . ":" . $Goals_B . "<br>";

?>
 
PHP:
$gsmt_differenz_prozent = $differenz_prozent + '33,333';

// [...]

$array_haufigkeit_ueberlegen = '30' / '100' * $gsmt_differenz_prozent;
Was zum Henker ist das denn? Zahlen als String schreiben, damit der Interpreter die zum Rechnen wieder umwandeln darf?

Nee nee nee... :ugly: