在Math.random()上设置种子

Kev*_*vin 8 java random random-seed

我需要在调用的Java代码上编写一些junit测试Math.random().我知道如果我实例化自己的Random对象以产生可重复的结果,我可以设置种子.还有办法做到这一点Math.random()吗?

rsp*_*rsp 12

该方法Math.random()使用私有静态字段:

private static Random randomNumberGenerator;
Run Code Online (Sandbox Code Playgroud)

如果你真的需要将它设置为a new Random(CONSTANT_SEED)(例如你需要你无法控制的JUNit测试代码),你可以通过使用反射来实现.

  • 您能详细说明您的答案的反思部分吗? (8认同)

Jon*_*vis 9

如何创建Random自己的实例并使用它?Math.random()创造一个并使用它,所以我不认为你可以搞乱它的种子.Random但是,如果您创建并直接使用它,则可以在创建时为其设置种子,和/或setSeed()稍后可以调用它.