Moin.
Ich hab folgende Funktion:
Die hat Berni mal vor ewigen Zeiten mal hier in den Codeschnipseln gepostet.
Das ganze läuft ohne Problem, wenn alle Array-Elemente unterschiedliche Wichtungen haben.
Hab ich aber mehrere Elemente mit der gleichen Wichtung, wird immer nur das im Array als erstes vorkommende Element genommen.
Wie kann man das abändern, dass auch wenn mehrere Elemente die gleiche Wichtung haben eines daraus zufällig gewählt wird?
Danke schonmal im Voraus.
Ich hab folgende Funktion:
PHP-Code:
srand ((double) microtime() * 1000000);
//Array anlegen: die Werte als Indizes, Gewichte als Werte.
$a = array (1=>4,2=>3,3=>3,4=>2,5=>2,6=>2);
//Dann holst du die Summe aller Gewichte mit
$x = array_sum ($a);
//Zufallszahl ermitteln:
$r = floor(rand (0,$x));
// und raussuchen, welcher Wert damit gemeint ist:
$s = 0;
for (reset($a); list($z, $w) = each($a); )
{
$s+=$w; // bisherige Summe ums aktuelle Gewicht erhoehen
if ($s>$r) break; // Abbruch wenn Gewichtsumme>Zufallszahl
}
// und ausgeben
echo $z;
Das ganze läuft ohne Problem, wenn alle Array-Elemente unterschiedliche Wichtungen haben.
Hab ich aber mehrere Elemente mit der gleichen Wichtung, wird immer nur das im Array als erstes vorkommende Element genommen.
Wie kann man das abändern, dass auch wenn mehrere Elemente die gleiche Wichtung haben eines daraus zufällig gewählt wird?
Danke schonmal im Voraus.
Kommentar