Prozent erechnen und ausgeben

Anacondi

Erfahrenes Mitglied
Hallo. sitze an einem kleinen spiel und stehe jetzt auf dem schlauch bei der Prozent Errechnung und der Ausgabe.
Also: eine Diebin soll einbrechen. Dabei soll sie je nachdem wie ihr Level ist verschiedenes erbeuten.
Beispiel:
10Kraft 10Abwehr 200 Dias 3Arbeiter 10Super
Level1 45% 25% 15% 10% 5%
Level2 40% 20% 15% 15% 10%
Level3 30% 15% 15% 20% 20%

Über einen Button -->Klauen<-- soll sie den vorgang starten und dann soll per zufall so wie in dem Beispiel oben da stehen, was sie erbeutet hat.
ich bräuchte bitte einen Lösungsweg . Komme an der stelle nicht weiter wie ich das errechne.

Danke im vorraus
 

basti1012

Erfahrenes Mitglied
so ganz verstehe ich das nicht was du haben willst.
Zb deine Diebin ist im Level 1 und soll klauen gehen.
sie klaut dann 45% Kraft,25% abwehr usw...
Willst du dann errechnen wie viel 45% kraft sind von 10 oder wie ? der was für Ergebnisse brauchst du
 

Anacondi

Erfahrenes Mitglied
Ich versuch mal anders zu erklären.
per button soll die Diebin starten mit klauen.
dabei soll per zufall ermittelt werden, was sie klaut.
geht man von 100% aus, soll sie also bei lvl1
entweder zu 45% Kraft, zu 25% Abwehr, zu 15% Dias, zu 10% Arbeiter oder zu 5% Super klauen.
sie klaut also bei jeder tuor nur ein von den sachen.
Die Prozente sind also die Wahrscheinlichkeit, was der Zufall bringt.
 

Sempervivum

Erfahrenes Mitglied
Witzige Aufgabe! Ich hatte früher schon einmal so etwas und habe es so gelöst: Ein Array angelegt, wo das Diebesgut entspr. Wahrscheinlichkeit abgelegt ist, also z. B. für Level 1: 45 mal Kraft, 25 mal Abwehr, 15 mal Dias usw. Greift man dann mit einem zufälligen Index auf das Array zu, erhält man das Diebesgut mit der betr. Wahrscheinlichkeit.
Code:
    <button onclick="klauen();">Klauen!</button>
    <script>
        var level = 0;
        var iKraft = 0, iAbwehr = 1, iDias = 2, iArbeiter = 3, iSuper = 4;
        var levels = [
            { perc: [45, 25, 15, 10, 5] },
            { perc: [40, 20, 15, 15, 10] },
            { perc: [30, 15, 15, 20, 20] }
        ];
        levels.forEach(function (item, idx) {
            item.probarr = [];
            item.perc.forEach(function (item2, idx2) {
                for (var i = 0; i < item2; i++) item.probarr.push(idx2);
            });
        });
        console.log(levels);
        function klauen() {
            var idx = Math.floor(Math.random() * 100);
            var geklaut = levels[level].probarr[idx];
            console.log(geklaut);
        }
    </script>
 

Anacondi

Erfahrenes Mitglied
Danke für deine Antwort.
Bin nicht gerade der schlauste..
kannst du mir noch sagen, wie ich dann das Ergebnis ausgebe mit echo
 

Sempervivum

Erfahrenes Mitglied
Ich habe es mal auf PHP umgestellt und dabei einen anderen Algorithmus verwendet:
Code:
        $thelevel = 0;
        $texts = ['Kraft', 'Abwehr', 'Dias', 'Arbeiter', 'Super'];
        $iKraft = 0; $iAbwehr = 1; $iDias = 2; $iArbeiter = 3; $iSuper = 4;
        $levels = [
            ['perc' => [45, 25, 15, 10, 5]],
            ['perc' => [40, 20, 15, 15, 10]],
            ['perc' => [30, 15, 15, 20, 20]]
        ];
        foreach ($levels as &$level) {
            $limit = 0;
            $level['probarr'] = [];
            foreach ($level['perc'] as $percentage) {
                $level['probarr'][] = $limit;
                $limit += $percentage;
            }
        };
        var_dump($levels);
        $stolen = -1;
        $percentage = rand(1, 100);
        var_dump($levels[$thelevel]);
        foreach ($levels[$thelevel]['probarr'] as $key => $prob) {
            if ($prob < $percentage) {
                $stolen = $key;
            } 
        }
        echo 'Diebesgut: ' . $texts[$stolen];
 
Zuletzt bearbeitet: