Setze Seed auf Math.random ()

8

Ich muss einige junit-Tests für Java-Code schreiben, der Math.random() aufruft. Ich weiß, dass ich den Startwert festlegen kann, wenn ich mein eigenes Random-Objekt instanziiere, um wiederholbare Ergebnisse zu erzielen. Gibt es eine Möglichkeit, dies auch für Math.random() zu tun?

    
Kevin 14.05.2010, 18:42
quelle

3 Antworten

12

Die Methode Math.random() verwendet ein privates statisches Feld:

%Vor%

Wenn Sie wirklich wirklich auf ein new Random(CONSTANT_SEED) setzen müssen (z. B. müssen Sie den Testcode testen, auf den Sie keine Kontrolle haben), können Sie dies tun, indem Sie reflection .

    
rsp 14.05.2010, 19:24
quelle
9

Wie wäre es, wenn Sie eine Instanz von Random selbst erstellen und stattdessen verwenden? Math.random() erstellt eins und benutzt das, also denke ich nicht, dass du dich mit seinem Samen anlegen kannst. Wenn Sie ein Random erstellen und es direkt verwenden, können Sie jedoch den Ausgangspunkt dafür festlegen, wenn Sie es erstellen, und / oder Sie können später setSeed() aufrufen.

    
Jonathan M Davis 14.05.2010 18:48
quelle
2

Setzen Sie es mit der Instanz von Random auf Ihren Seed oder erweitern Sie einfach die Methoden, um die benötigten Werte zurückzugeben

%Vor%     
iTake 19.02.2013 10:10
quelle

Tags und Links