Seed für Rand?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Seed für Rand?

    Hallo,

    wie ich eben feststellen musste (und soweit ich gesehen hab haben das auch schon andere festgestellt ), arbeitet ' ORDER BY RAND() ' nicht wirklich richtig zufällig.

    Nun tauchte hier im Forum in nem anderen Thread der Vorschlag auf, erst per PHP einen zufälligen Seed-wert für RAND() zu erzeugen.

    Meine Frage:
    Welche Werte (von - bis ) sind hierfür zulässig?

    Gruss
    Quetschi

    EDIT:
    microtime() von PHP als Seed zu verwenden mag mysql wohl nicht. Wohl zu groß dieser Wert?
    Zuletzt geändert von Quetschi; 02.06.2005, 14:53.
    Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
    Schön - etwas Geschichte kann ja nicht schaden.
    Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

  • #2
    http://dev.mysql.com/doc/mysql/en/ma...html#id3156466 tut kund:
    RAND(N)

    If an integer argument N is specified
    Ein integer in mysql geht laut http://dev.mysql.com/doc/mysql/en/nu...-overview.html von -2147483648 bis 2147483647 (signed), bzw. von 0 bis 4294967295 (unsigned).

    microtime liefert laut Beschreibung einen string, was erklären könnte, dass mysql sich beschwert...
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #3
      mal mit

      RAND(UNIX_TIMESTAMP())

      probiert

      gruss

      Kommentar


      • #4
        @mrhappiness

        die Erklärung von RAND() hat ich vorhin auch grad gefunden, trotzdem danke.

        @MoRtAlAn

        UNIX_TIMESTAMP() bringt auch nix, da hier wahrscheinlich nur selten verschiedene Timestamps rauskommen, weil das Script recht schnell durchläuft. Deshalb wäre ich ja auf microtime ausgewichen, aber microtime liefert ja sowas in der Art: 0.41123455 121332131313

        Werd jetzt einfach in PHP eine Zufallszahl im INT-Bereich generieren.

        Danke
        Quetschi
        Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
        Schön - etwas Geschichte kann ja nicht schaden.
        Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

        Kommentar


        • #5
          So, erzeuge nun den Seed wie folgt:
          PHP-Code:
              srand(microtime()*1000000);
              
          $seed rand(1,2147483647); 
          scheint gut zu klappen
          Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
          Schön - etwas Geschichte kann ja nicht schaden.
          Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

          Kommentar

          Lädt...
          X