MYSQ und PHP random

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

  • MYSQ und PHP random

    Hi,

    ich denke so ein Thread wurde hier entweder schon besprochen oder es nervt euch nur noch *g.

    Also jetzt schon mal sorry aber erschlagt mich nicht gleich

    Nun das Mysql nicht vernünftig zufällige Datenstäze wählen kann wissen wir. Schade eigentlich.

    Ich habe mir folgendes überlegt: Alle id´s aus einer bestimmten Tabelle zu ziehen um sie dann in einen array zu speichern.

    PHP bringt ja schon von haus aus eine Funktion mit, die zufällige Werte aus einem Array holt.

    Das Problem ist jedoch, was ist wenn ich mmm sagen wir mal so 100000 Datensätze habe ?

    Ich denke da an Performance.

    Gibt es eine Allternative ?

  • #2
    Re: MYSQ und PHP random

    Original geschrieben von Deniz1982

    Das Problem ist jedoch, was ist wenn ich mmm sagen wir mal so 100000 Datensätze habe ?
    Du mußt die Werte ja nicht alle einlesen. Es reicht ein SELECT * FROM tabelle LIMIT n,1 (n= Zufallszahl zwischen 1 und 1000000)

    Kommentar


    • #3
      mmm klappt das auch, wenn nicht die ids Lückenhaft sind ? Zwischen durch löscht man ja auch mal was.

      Die Anzahl der Datensätze bekommt man ja leicht mit Count raus. Aus dieser Zahl dann einen raussuchen und so den Limit setzten ? Meinst du das so ?

      Gruss

      Kommentar


      • #4
        Re: MYSQ und PHP random

        Original geschrieben von Deniz1982
        Nun das Mysql nicht vernünftig zufällige Datenstäze wählen kann wissen wir.
        Wissen wir? RAND()?!

        Kommentar


        • #5
          Re: Re: MYSQ und PHP random

          Original geschrieben von lennart
          Wissen wir? RAND()?!
          Schonmal Rand() ausprobiert ? Irgendwann erkennst du, dass bestimmte Datensätze sich ziemlich oft wiederholen. Auch wenn du die Werte setzt.

          Kommentar


          • #6
            mmm klappt das auch, wenn nicht die ids Lückenhaft sind ? Zwischen durch löscht man ja auch mal was.
            Genau deswegen ja nicht ID = sondern LIMIT. LIMIT holt den x-ten Datensatz, egal was seine ID ist.

            Kommentar


            • #7
              Ich werd es mal testen wenn es klappt dann bin ich glücklich.

              Falls es klappt, werde ich hier natürlich die Lösung Posten. Für andere

              Kommentar


              • #8
                Re: Re: Re: MYSQ und PHP random

                Original geschrieben von Deniz1982
                Schonmal Rand() ausprobiert ? Irgendwann erkennst du, dass bestimmte Datensätze sich ziemlich oft wiederholen. Auch wenn du die Werte setzt.
                Zufall heißt ja nicht "keine Wiederholungen". Eine Liste mit 10 zufälligen Zahlen kann auch zehnmal die selbe Zahl beinhalten. Siehe dazu: http://de.wikipedia.org/wiki/Gesetz_...C3%9Fen_Zahlen
                [FONT="Helvetica"]twitter.com/unset[/FONT]

                Shitstorm Podcast – Wöchentliches Auskotzen

                Kommentar


                • #9
                  Hey du hast absolut recht. Aber wenn ich 10000 Datenstäze habe und seltsamerweise immer wieder die
                  gleichen Datenstäte ziemlich oft dabei sind, dann arbeitet MYSQL nicht mit "Gesetz der großen Zahlen".

                  Im Klartext, wir können hier nicht mehr von Zufall sprechen, wenn von 10000 Datensätze und 100 Versuchen 80 mal der gleiche Datensatz auftaucht.

                  Kommentar


                  • #10
                    Original geschrieben von Deniz1982
                    Aber wenn ich 10000 Datenstäze habe und seltsamerweise immer wieder die
                    gleichen Datenstäte ziemlich oft dabei sind, dann arbeitet MYSQL nicht mit "Gesetz der großen Zahlen".

                    Im Klartext, wir können hier nicht mehr von Zufall sprechen, wenn von 10000 Datensätze und 100 Versuchen 80 mal der gleiche Datensatz auftaucht.
                    Eben doch! Lies doch mal den Wikieintrag. Da ist das doch sehr anschaulich erklärt.
                    [FONT="Helvetica"]twitter.com/unset[/FONT]

                    Shitstorm Podcast – Wöchentliches Auskotzen

                    Kommentar


                    • #11
                      Hast du nen ausreichend starken Seed mitgegeben? Ich hatte dann eigentlich noch nie größere Probleme.

                      Kommentar


                      • #12
                        Alternativ alle IDs in eine Extratabelle schreiben, einen Datensatz über LIMIT n, 1 selektieren und herauslöschen. Ist die Tabelle leer, IDs neu einfügen. So hast du einen Zufall ohne Wiederholung.

                        Kommentar


                        • #13
                          das entspricht einer permutation der reihenfolge.
                          wenn man diese permutation speichert muss man die elemente nur hintereinander lesen. und nicht immer löschen.
                          ist man am ende angekommen, einfach eine neue permutation bauen.
                          blllubb

                          Kommentar


                          • #14
                            Ja, entweder du stellt vorher eine zufällige Reihenfolge her und ließt auch in dieser Reihenfolge die Werte aus, oder du pickst dir halt jedesmal einen zufälligen Wert heraus und verwirfst ihn. Kommt im Endeffekt auf das gleiche heraus, nur musst du dir bei ersterem irgendwie die aktuelle Position merken und bei dem zweiten den Löschvorgang mit vornehmen.

                            Kommentar

                            Lädt...
                            X