andreas: Zufallszahlen von bis ohne doppelte

Hallo,

ich habe was gebastelt, um eine Zufallszahl zu erhalten.

Ab der Zufallszahl übergebe ich dies als Position.
Da ich aus dem Bereich mir 3 Themen anzeigen möchte,
habe ich Limit auf 3 gesetzt.

$themen_check = mysql_query("SELECT count(bereich) FROM $table ");

$themen_gesamt = mysql_result($themen_check,0);

if($themen_gesamt != 0) {

mt_srand(time());
$themen_3 = mt_rand(0,$themen_gesamt-1);

$themen_list = @mysql_query("SELECT * FROM $table LIMIT $themen_3,3");

Problem hierbei ist,
habe ich nur 5 Themen und die Zufallszahl liegt bei 4,
dann  kann ich keine 3 Themn mehr erhalten,
sondern nur noch 1 Thema.

Wie bekomme ich z.B. 3 Zufallszahlen aus 5 Themen.
Die Zahlen dürfen aber nicht doppelt vorkommen.

Idee ?
Beispiel?

Danke
Andreas

  1. Hallo Andreas,

    wie wäre es wenn du alle themen in ein array schreibst?

    srand ((float) microtime() * 10000000);
    $input = array ("Thema1", "Thema2", "Thema3");
    $rand_keys = array_rand ($input, 2);
    print $input[$rand_keys[0]]."\n";
    print $input[$rand_keys[1]]."\n";

    Das habe ich von http://www.php.net/manual/en/function.array-rand.php
    Vielleicht hilft es ja...

    gruss
    luca

  2. Wie bekomme ich z.B. 3 Zufallszahlen aus 5 Themen.
    Die Zahlen dürfen aber nicht doppelt vorkommen.

    Schreib die Werte in eine Liste/Array.
    Selektiere per Zufall einen Wert zwischen 1 und Länge der Liste/Array. Lösche danach den Wert aus Liste/Array und fahre fort.

  3. Wie bekomme ich z.B. 3 Zufallszahlen aus 5 Themen.
    Die Zahlen dürfen aber nicht doppelt vorkommen.

    Leider verstehe ich Deine Vorgehensweise nicht 100%ig. Willst Du 3, 5, n zufällig ausgewählte Einträge einer Tabelle anzeigen, oder steckt da mehr dahinter?