Quellcode/Periodenlänge

Maddimini

Mitglied
Hallo :)

weiß jemand, wie ich die Periodenlänge der Zufallsfolge der Java Random Klasse berechnen kann ? Oder besser vom PC berechnen lassen kann ;)

Stadart API:http://download.oracle.com/javase/6/docs/api/index.html?java/util/Random.html

Nice:http://www.docjar.com/html/api/java/util/Random.java.html

Also das Modul m = 2^48, a = 252149003917 und c = 11.
a konnte ich bereits im Quelltext identifizieren:
Java:
  34       private static final long multiplier = 0x5deece66dL;
aber c und m musste ich in der Literatur nachschauen, findet das einer ?

Vielen Dank schonmal für eure Hilfe:)
 
Hallo,

schau dir mal die Methode next an:
Java:
protected synchronized int next(int bits) {
    seed = (seed * multiplier + 0xbL) & ((1L << 48) - 1);
    return (int) (seed >>> (48 - bits));
}
Dort kann man c = 0xb = 11 und m = 2^48 rauslesen. Mit dem Satz von Knuth folgt, dass die Periodenlänge 2^48 beträgt.

Grüße,
Matthias
 
Vielen Dank :)

ist m dann das: (1L << 48) - 1) ?
aber das Modul wird ja eigentlich Modulo gerechnet und nicht mit Bitweise UND Verknüpft :/ ?
 
Zurück