Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Prozentwert von Zahl und deren Summanden soll gleich sein

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] Prozentwert von Zahl und deren Summanden soll gleich sein

    Hallo liebe Community,

    Ich hänge momentan schon länger an einem Problem. Vorab möchte ich euch noch ein wenig Kontext bereitstellen, da mein Vorhaben sonst, meiner Meinung nach, schwehr verständlich währe (Ich habe noch eine kürzere Erklärung meines Vorhabens ohne Kontext, diese findet man weiter unten, unter "Kurze Erklärung").

    Ich arbeite schon seit längerem an einem Strategie Browserspiel, dort hat man die Möglichkeit als Gruppe, Truppen zu "sammeln" und gemeinsam einen großen Angriff auszuführen. Datenbanktechnich sieht dies so aus, dass es eine Tabelle gibt die die gesammte Truppenbewegung (Tabelle A) dokumentiert und eine Tabelle die beinhält wer wie viele Truppen beim Angriff "beigesteuert" hat (Tabelle B) (Wichtig, da die einzelnen Spieler immer noch die Möglichkeit haben ihre Truppen wieder zurück in ihr Dorf zu schicken), die Tabelle A besitzt zusätzlich eine Spalte mit den einzelnen Ids der Einträge der Tabelle B.

    Nun gibt es jedoch ein Problem beim Ausrechnen des Kampfes. Dies läuft so ab, dass ein Prozentsatz von Toten Truppen ermittelt wird (anhand der gesammten Truppen), sowie die Anzahl der toten Truppen (A). Bei dem "gesammelten Angriff" hat man jedoch jetzt das Problem, dass der große Angriff aus vielen kleinen Gruppen aus Truppen besteht. Nun muss man also auch bei den einzelnen Gruppen prozentual berechnen, wie viele Tode (B) es gab. Am Ende müssen dann die toten Truppen (A) gleich die Summe aller Toten Truppen (B) sein. Dazu sei gesagt, dass die Trupppen nur in ganzen Zahlen dargestellt werden können. Dies gestaltet sich jedoch als schwierig, da nicht immer Truppen (A) = Truppen (B) sind (Da ich runden muss, um auf ganze Zahlen zu kommen). Leider schlugen meine bisherigen Lösungsansätze fehl, habe dazu ein kleines Script erstellt, um das Ganze zu simulieren.

    Kurze Erklärung:
    Ich versuche anhand einer Prozentzahl (P) einen Preozentwert (W) einer Zahl auszurechnen und danach die Zahl in Summanden aufzuteilen. Aschließend soll man anhand der Prozentzahl (P) Prozentwerte der Summanden ausrechnen, welche dann am Ende als Summe, den Prozentwert (W) der ganzen Zahl ergeben soll. Zu erwähnen ist dass Die Prozentanteile Ganze Zahlen sein müssen. Dies ist jedoch leider nicht immer der Fall. Leider schlugen meine bisherigen Lösungsansätze fehl, habe dazu ein kleines Script erstellt, um das Ganze zu simulieren.

    Script:
    PHP-Code:
    echo "<pre>";
    $divide mt_rand(1,15);
    $percent mt_rand(1,100);
    $subtotal = array();
    $total 0;
    //Summanden ($subtotal) erstellen, und anhand von den Summanden die Summe errechenn
    for($i=0$i<$divide$i++){
        
    $sub mt_rand(1,75);
        
    $subtotal[] = $sub;
        
    $total $total+$sub;
    }
    echo 
    "Total: ".$total." - "."Prozent: ".$percent."% - ";
    $death = ($total/100)*$percent;//Wie viele Truppen starben
    $death_round round($death);
    echo 
    "Tode: ".$death_round."<br>";
    //Alle Summanden einzeln durchgehen
    $all_death 0;
    foreach (
    $subtotal as $key => $value) {
        
    $death_calculated = ($value/100)*$percent;
        
    $death_final round($death_calculated);//Hier müsste sich was ändern, bei der Entscheidung wann auf bzw. abgerundet werden soll
        
    echo "Subtotal: ".$value." - Tode: ".$death_final."<br>";
        
    $all_death $all_death+$death_final;//Summe aller getöteten Truppen
    }
    echo 
    "Summanden Tode: ".$all_death."<br>";
    if(
    $death_round == $all_death){
        echo 
    "<span style='color:#04B404'>Geklappt!</span>";
    }else{
        echo 
    "<span style='color:#FF0000'>Fehlgeschlagen!</span>";
    }
    echo 
    "</pre>"
    Schonmal danke im Vorraus für eure Hilfe


  • #2
    Runden, Runungsfehler summieren und dann eben an einer Stelle 1 oder 2 Truppen hinzufügen oder abziehen. Wenn du mit mehr als 100 Truppen angreifst, sollte das kein Problem sein.
    Fatal Error: Windows wird gestartet

    Wie administriert man ein Netzwerk: Beispiel

    Kommentar

    Lädt...
    X