Announcement

Collapse
No announcement yet.

Funkion rand()

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Funkion rand()

    Hallo liebes Forum,

    ich bin neu hier und weiß deshalb nicht genau ob ich hier richtig bin...
    Nun zu meiner Frage:

    Ich habe für eine Stichprobenziehung die MySQL-Funktion rand() benutzt. Hat auch alles wunderbar funktioniert, aber ich brauche jetzt im Rahmen der Projektdokumentation den Algorithmus der hinter der Funkion steckt.
    Kann mir jemand vielleicht weiterhelfen und mir verraten wo ich den verdammten Algorithmus finde?!

    Für jede Art von Antwort bin ich sehr Dankbar!

    Liebe Grüße aus Bonn
    Giwwel

  • #2
    Schon mal die Doku benutzt?
    Notfalls den MySQL-Quellcode ziehen und nachschauen.

    Comment


    • #3
      Danke für die Antwort!
      Natürlich habe ich in der Doku schon gesucht. Aber die Erklärung reicht meinem Chef nicht. Dieser hätte gerne den Algorithmus zu der Funktion.
      Wo bekomme ich denn den MySQL-Quellcode her?

      Schon mal vielen Dank für die Antworten!
      MfG Giwwel

      Comment


      • #4
        http://dev.mysql.com/downloads/mysql/#downloads
        Christian

        Comment


        • #5
          Dankeschön!

          ich habe jetzt ind der Datei ndb_rand.c diesen Code gefunden:

          -------------------------

          #include <ndb_rand.h>

          static unsigned long next= 1;

          /**
          * ndb_rand
          *
          * constant time, cheap, pseudo-random number generator.
          *
          * NDB_RAND_MAX assumed to be 32767
          *
          * This is the POSIX example for "generating the same sequence on
          * different machines". Although that is not one of our requirements.
          */
          int ndb_rand(void)
          {
          next= next * 1103515245 + 12345;
          return((unsigned)(next/65536) % 32768);
          }

          void ndb_srand(unsigned seed)
          {
          next= seed;
          }
          -------------------------

          Ist das der Quellcode zu der Funktion rand()?

          Sieht mir irgendwie nicht danach aus weil hier immer die gleiche Reihenfolge erstellt wird. Bei der Funktion rand(), ohne Startparameter, wird aber immer eine andere Reihenfolge generiert!

          Hat jemand ne Ahnung?

          Dank und Grüße
          Giwwel

          Comment


          • #6
            Warum sollte das so sein? Grundlage ist ndb_srand, welches wohl irgendwann, irgendwo aufgerufen wird
            Christian

            Comment


            • #7
              Vielen Dank für die schnelle Antwort...

              Ja sry... hast natürlich recht mit ndb_srand...
              Aber dann ist das ja nicht der kompletten Quellcode für die Funktion rand() oder?

              Nehmen wir an ich hab das SQL-Statement:

              "SELECT * FROM testtable ORDER BY rand() LIMIT 450"

              Dann will ich wissen wie dieses rand() hier funktioniert.

              MfG
              Giwwel

              Comment


              • #8
                Nein, das dürfte nicht der komplette Quellcode sein. Mit der Funktion wird rand() initialisiert. Suche, wer die wann mit welchem Parameter aufruft. Ggf. musst du dir einen C/C++ Programmierer suchen, der das analysiert.
                Christian

                Comment

                Working...
                X