Announcement

Collapse
No announcement yet.

Random

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

  • Random

    Hallo Liste,

    habe gerade so meine Nöte mit Random.

    Ich verwende Random.nextLong() zur generierung eines Primärschlüssels in unserer Datenbank.

    Wenn man davon ausgeht, daß Long eine Range von 2^64 hat ist es schon erstaunlich, daß ich schon nach 2800 Werten eine Primärschlüsselverletzung habe.

    Ich habe auch schon gehört, daß der Allgoritmus zum erzeugen von dieser Zufallszahl nicht so genial ist und vorherbestimmbare Ergebnisse liefert.

    Was ist bräuchte ist eine Klasse die wirklich eine Zufallszahl liefert, die sich nicht schon nach einigen tausend Werten wiederholt!

    Ob dies ein String oder ein Long ist, ist nicht ausschlaggebend.

    Bin für jeden Tip dankbar.

    lg Dietmar

  • #2
    Hallo,
    warum vergibt man in einer Datenbanktabelle den Primärschlüssel
    anhand einer Zufallszahl

    Comment


    • #3
      Hallo Ralf,

      danke für Deine kritische Betrachtung, aber ich werde schon meine Gründe haben!

      Sagen wir einmal, der PK mit einer Zufallszahl ist sicherlich nicht so elegant, aber als Alternative nehme ich eine Spalte mit einem Unique Index und dann habe ich das gleiche Problem!

      Meine Frage bleibt aber die Selbe. Gibt es einen wirklich zuverlässigen Generator für Zufallszahlen in der Java 1.5 API?

      lg Dietma

      Comment


      • #4
        Ich hab's einmal mit

        Random rand = new java.security.SecureRandom();

        probiert.

        Hier gab es bei einem Test mit 1.000.000 Integer Werten 114 Integer die doppelt vorgekommen sind. Dies scheint mir schon eine brauchbare Streuung der Daten.

        Bin aber trotzdem für jede Anregung dankbar.

        lg Dietma

        Comment


        • #5
          hallo,

          ich bin nicht der held in der theorie der zufallszahlen, aber soviel ich weiß wirst du bei jedem algorithmus der nicht eine zufällige externe größe zugreift und diese z.b als startwert benutzt (z.b. die summe der pixel einer wetterkamera auf dem potsdamerplatz in berlin oder so) immer nach einer bestimmten zeit t wiederholungen in der zahlensequenz bekommen.

          oder täusche ich da mich

          Comment


          • #6
            Hi Dietmar,

            hab das grad gelesen und obwohl es länger her ist, interessiert es mich.<br>

            Ich möchte mal folgenden Gesichtspunkt in die Betrachtung des Algorithmus von java.security.SecureRandom() einwerfen: <br>
            Bei Integer ist die Anzahl möglicher Werte grob gerundet vier Milliarden. Du ziehst aus diesem Vorrat an Werten eine Million. Die Chance, dass Du dabei zwei gleiche Zahlen erwischst ist also eine Million zu vier Milliarden. Gerundet sind das eins zu viertausend oder ein viertausendstel. Nimmt man diese Wahrscheinlichkeit mit der Million gezogener Werte mal kommt man auf 250. D.h. der Algorithmus streut sogar besser als er nach Wahrscheinlichkeit müsste. Keine Ahnung, ob das geht, aber kann man den Algorithmus auch mit Long benutzen?<br>

            Kann sein, dass meine Rechnung von oben Quatsch ist und ich bin in Wahrscheinlichkeitsrechnung die Oberflasche. Aber dann hab ich mich hiermit wenigstens geoutet und gebe jemand Klügerem die Chance, mich aufzuklären.<br>

            Gruß, ngom
            http://www.winfonet.eu

            Comment

            Working...
            X