PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Frage zur klasse 'Random'



YaK
29-01-2005, 13:02
Hallo,
Wenn man z.B. das hier hat: "Random rnd=new Random(seed)" das 'seed', also das was in den klammern steht, was genau macht das? Oder was ändert sich wenn man diese zahl verändert??
Thx

anda_skoa
29-01-2005, 13:54
Der Seed ändert die Zahlenfolge.

Wenn du zwei Random Objekte mit dem selben Seed erzeugst, liefern sie die gleiche, in sich zufällige, Zahlenfolge.

Darum nimmt man üblicherweise einen momentan Wert als Seed, zB System.currentTimeMillis()

Ciao,
_

YaK
29-01-2005, 17:00
Ah ok, danke
Also wenn man nicht sowas wie System.currentTimeMillis() nimmt, ist die Zahlenfolge nicht wirklich zufällig?

gaansch
29-01-2005, 17:28
Wenn du currentTimeMillis als seed nutzt, wird immer von einer anderen Zahl ausgegangen, da currentTimeMillis niemals den gleichen Wert nochmal annimmt. Dadurch erzeugst du immer andere Zahlenfolgen.

mwanaheri
29-01-2005, 17:32
Ah ok, danke
Also wenn man nicht sowas wie System.currentTimeMillis() nimmt, ist die Zahlenfolge nicht wirklich zufällig?

Wirklich zufällig geht doch auf einer deterministischen Maschine (computer) gar nicht. Zufällig im Sinne von 'nicht vorhersagbar' schon, doch dafür braucht es einen nicht genau zu bestimmenden Ausgangswert, wie z.B. die Millisekunden.

anda_skoa
30-01-2005, 15:58
Es hängt auch davon ab, wie der Zufallszahlengenerator implementiert ist.

Wenn große Zufälligkeit nötig ist, kann man dazu zB relative unabhängige Ereignisse zur Verbesserung heranziehen (Zeit zwischen Interrupts, etc), oder auf spezielle Hardware (zB Rauschdioden) zurückgreifen.

Die Standardimplementationen mit relativ schwer reproduzierbaren Seed reichen aber für die meisten Anwendungen aus.

Ciao,
_