Hi - I need to write some junit tests on java code that calls Math.random(). I know that I can set the seed if I was instantiating my own Random object to produce repeatable results. Is there a way to do this also for Math.random() ?
+6
A:
How about creating an instance of Random
yourself and using that instead? Math.random()
creates one and uses that, so I don't think that you can mess with its seed. If you create a Random
and use it directly, however, you can set the seed for that when you create it, and/or you can call setSeed()
on it later.
Jonathan M Davis
2010-05-14 18:48:49
+2
A:
The method Math.random()
uses a private static field:
private static Random randomNumberGenerator;
If you really really need to set this to a new Random(CONSTANT_SEED)
(for instance you need to JUNit test code which you have no control over) you could do so by using reflection.
rsp
2010-05-14 19:24:35