我有一个小概念问题。
我需要随机播种,这样当我重新加载我的关卡时,我总是得到相同的radom。
所以我需要使用Random#setSeed
。
我遇到的问题是我需要做一个
Random r = new Random();
r.setSeed(currentSeed);
问题是我必须在我的代码中传递/获取r
的这个实例。
我想知道是否有接近C的解决方案:
Math.Random(currentSeed);
我现在最接近的是:
ClassA:
public static Random r;
private int currentSeed = ...;
initRandom(){
r = new Radom(currentSeed);
}
ClassB:
...
//instead of Math.random();
r.random();
...
但这似乎不太好。
有什么想法吗?
答案 0 :(得分:1)
是的,您需要传递相同的Random实例,作为参数,或者通过全局(静态变量或单例)传递。
答案 1 :(得分:0)
如果您在类之间使用相同的随机数并且您想要重现性,则需要确保它以相同的顺序使用。如果您的类以不同的顺序执行,例如如果它的多线程你会得到不同的结果。