Hallo erstmal,
Zu Beginn ein kleines Bildchen:
Wie man sehen kann, ist dies ein typisches Baumdiagramm mit 16 Strängen. Ich bin gerade dabei, mir ein Script in PHP zu schreiben, welches am Ende Chancen für jeden Strang ausgeben soll.
Vorausgehende Problemstellung:
Es existieren beliebig viele Items mit beliebigen Ziehchancen. Für jedes Item wird gesondert ausgewürfelt, ob es gezogen wird oder nicht. Bleiben wir mal wie im Baumdiagramm bei 4 Items:
#1 zu 50%
#2 zu 33%
#3 zu 25%
#4 zu 11%
Was ich bisher ausgerechnet habe ist, wie die Gesamtwahrscheinlichkeit ist, also wieviele Items im Durchschnitt gezogen werden. Im angesprochenen Beispiel wären das 0.97
Jeder Strang beschreibt ein Ereignis, also
( von links nach rechts )
Strang1: #1 #2 #3 #4
Strang2: #1 #2 #3 nichts
Strang3: #1 #2 nichts #4
Strang4: #1 #2 nichts nichts
.
.
.
Strang16: nichts nichts nichts nichts
Soweit, so gut ...
Was ich jetzt suche, ist eine allgemeine Berechnungsformel für einen Strang, wobei zu bedenken ist, dass es nicht immer 16 Stränge sind, sondern 2^(Anzahl Items).
Hoffe alle Klarheiten wurden beseitigt und ihr könnt mir etwas auf die Sprünge helfen :)
MfG
Eric
PS: Hups, das heißt ja Ast und nicht Strang ... nunja, hoffe ihr versteht mich trotzdem ;)
Anbei noch der bisherige Quellcode, falls er zum Verständnis beitragen sollte.
<html>
<body>
<?
$anz_items=$HTTP_POST_VARS['anzahl_items'];
if (isset($HTTP_POST_VARS['chance1'])) {
for ($i=1;$i<=$anz_items;$i++){
${'chance'.$i}=$HTTP_POST_VARS['chance'.$i]/100;
${'chance'.$i.'gw'}=1-${'chance'.$i};
}
}
?>
<form action=" <?$PHP_SELF;?> " method="POST" >
<input type="text" name="anzahl_items" value="<?echo$anz_items;?>" style="width:50px;text-align:center">
<input type="submit" value="Anzahl bestätigen">
<?
for ($i=1;$i<=$anz_items;$i++){
$left=75*$i;
echo"<form action='".$PHP_SELF."' method='POST'>\n";
echo"<input type='text' name='chance".$i."' value='".(${'chance'.$i}*100)."' style='position:absolute;left:".$left."px;top:75px;width:50px'>\n";
}
// Berechnung von Chance, wieviel durchschnittlich droppt Strang ( leer - leer - leer )
$gegenchancen=1;
$gesamtchancen=0;
for ($i=1;$i<=$anz_items;$i++){
if (${'chance'.$i.'gw'} != 0) {
$gegenchancen *= ${'chance'.$i.'gw'};
}
$gesamtchancen += ${'chance'.$i};
}
$endchance=$gesamtchancen-$gegenchancen;
echo"<br><b><u>Effektive Dropchance:</u></b> ".round(($endchance*100),2)."%";
?>
</form>
</body>
</html>