Zufällige Auswahl von 5 verschiedenen Arrayeinträgen

tommycush

Mitglied
Hi,

ich habe ein Array mit einer ganzen Menge Einträge. Ich möchte aus diesem Array 5 verschiedene Einträge zufällig auswählen.

Ich habe es bereits hinbekommen, einen einzelnen Wert per Zufall auszulesen. Wenn ich diesen Vorgang jetzt einfach 5mal wiederhole, kann es logischerweise vorkommen, daß derselbe Eintrag mehrmals ausgewählt wird.

Hier ist erstmal mein bisheriger Code:

Code:
//Auslesen aller Langfassungen
$sql = "SELECT beitragID FROM beitrag WHERE fassung='l' ORDER BY beitragID";
$ausgabe = mysql_query($sql) or die(mysql_error);

//Speichern der IDs in einem Array
while($reihe = mysql_fetch_assoc($ausgabe)){
	$array[] = $reihe['beitragID'];
}

//Zufällige Auswahl von 1 Array-Eintrag

	$randposition = rand(0,sizeof($array)-1);
	$ausgabe = $array[$randposition];

Kann mir jemand helfen, den Code so umzubauen, daß nicht nur 1 Eintrag, sondern 5 verschiedene Einträge ausgewählt, und in einem weiteren Array gespeichert werden?

Bin für jeden Tipp dankbar. Gruß, tommycush
 
Also theoretisch:

Du musst mit Hilfe einer for-Schleife den Araay mit deinen Keys durchlaufen und dabei mit Hilfe einer IF-Abfrage prüfen, ob die durch den Zufallsgenerator erzeugt Zahl bereits im Array vorhanden ist. Ist das der Fall, wird neu generiert, bis eine Zahl gerneriert wird, die noch nicht im Array ist. Also so stelle ich mir das jedenfalls theoretisch vor.
 
Du könntest auch einfach die Abfrage optimieren:
Code:
SELECT
        `beitragID`

  FROM
        `beitrag`

  WHERE
         `fassung´ = 'l'

  ORDER BY
        RAND()

  LIMIT
        5
 
@ moritz123: So in der Art bin ich das ganze auch angegangen. Leider ohne Erfolg, ich hätte damals in der Algorithmen Vorlesung mal besser aufpassen sollen ;)

@ Gumbo: Danke, das erzielt genau den Effekt den ich wollte. Wusste gar nicht, daß SQL so eine Methode unterstützt.
 

Neue Beiträge

Zurück