我需要对调用Math.random()
. 我知道如果我实例化自己的 Random 对象以产生可重复的结果,我可以设置种子。有没有办法做到这一点Math.random()
?
问问题
15245 次
3 回答
12
该方法Math.random()
使用私有静态字段:
private static Random randomNumberGenerator;
如果您真的需要将其设置为 a new Random(CONSTANT_SEED)
(例如,您需要 JUNit 测试您无法控制的代码),您可以使用反射来实现。
于 2010-05-14T19:24:35.840 回答
9
如何创建Random
自己的实例并使用它呢?Math.random()
创建一个并使用它,所以我认为你不能弄乱它的种子。但是,如果您创建Random
并直接使用它,您可以在创建它时为其设置种子,和/或您可以setSeed()
稍后调用它。
于 2010-05-14T18:48:49.660 回答
3
使用您的种子使用 Random 实例设置它,或者只是扩展方法以返回您需要的值
Field field = Math.class.getDeclaredField("randomNumberGenerator");
field.setAccessible(true);
field.set(null, new Random() {
@Override
public double nextDouble() {
return 1;
}
});
于 2013-02-19T10:10:35.203 回答